Skip to content

Linux 常用命令

防火墙设置

  1. 开启防火墙

    java
    systemctl start firewalld
  2. 关闭防火墙

    java
    systemctl stop firewalld
  3. 查看防火墙状态

    java
    systemctl status firewalld
  4. 查看开发端口列表

    java
    firewall-cmd --list-ports
  5. 查看已配置的所有规则

    java
    firewall-cmd --list-all
  6. 开放防火墙端口

    java
    firewall-cmd --zone=public --add-port=8080/tcp --permanent 
    
    命令含义:
    –zone #作用域
    –add-port=8080/tcp #添加端口,格式为:端口/通讯协议
    –permanent #永久生效,没有此参数重启后失效

    注:关闭端口同开放端口,只需把 add 改成 remove

  7. 指定端口和IP访问

    firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.211.103" port protocol="tcp" port="80" accept"

  8. 移除规则

    firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.211.103" port protocol="tcp" port="80" accept"

  9. 重启防火墙(开放或者关闭端口需要重启防火墙)

    java
    firewall-cmd --reload

Linux环境下Nginx命令

  • 安装Nginx
    java
    sudo apt-get install nginx
  • 启动Nginx服务
    java
    sudo systemctl start nginx
  • 停止Nginx服务(systemd 会立即终止 Nginx 进程,不会等待当前请求处理完毕,可能会导致正在处理的请求被中断,连接被立即关闭。)
    java
    sudo systemctl stop nginx
  • 停止Nginx服务进程(Nginx 接收到停止信号后,会完成当前正在处理的请求,然后优雅地关闭服务,释放占用的资源。)
    java
    sudo nginx -s stop
  • 重启Nginx服务(在重新启动期间,Nginx 将会关闭所有的连接,停止当前正在处理的请求,并重新加载配置文件后重新启动服务。)
    java
    sudo systemctl restart nginx
  • 查看Nginx的运行状态
    java
    sudo systemctl status nginx
  • 设置Nginx开机自启动
    java
    sudo systemctl enable nginx
  • 禁止Nginx开机自启动
    java
    sudo systemctl disable nginx
  • 配置文件路径
    java
    /etc/nginx/nginx.conf
  • 测试Nginx配置文件语法是否正确
    java
    sudo nginx -t
  • 查看Nginx当前监听的端口和进程
    java
    sudo netstat -tuln | grep nginx
  • 测试Nginx服务器是否正常工作
    java
    curl http://localhost/
  • 查看Nginx版本信息
    java
    nginx -v
  • 查看Nginx的编译配置参数
    java
    nginx -V
  • Nginx配置文件重新加载(会通知 Nginx 重新加载配置文件,但是不会终止当前正在处理的连接)
    java
    sudo systemctl reload nginx
  • 重新加载Nginx配置文件
    java
    sudo nginx -s reload

查询运行程序信息

  • 查找程序相关的运行进程
ps -ef | grep minio
ps -ef
   ps:查看当前系统进程的快照。
   -e:显示所有进程(包括其他用户的进程)。
   -f:以完整格式输出(包括 PID、父进程、启动时间、命令行等)。
  • 查看进程 ID (PID) 的进程所监听的网络端口

方式一

sudo ss -tulnp | grep 2908112
ss -tulnp
   ss:比 netstat 更现代的 socket 统计工具,用于查看网络连接
   -t:显示 TCP 端口
   -u:显示 UDP 端口
   -l:仅显示监听(LISTEN)状态的端口
   -n:以数字形式显示端口(不解析为服务名,如直接显示 80 而非 http)
   -p:显示占用端口的进程信息(需要 sudo 权限)

方式二

netstat -tulnp | grep 9000

对比

特性netstatss
📦 所在工具包net-tools(较旧,很多系统不默认安装)iproute2(新工具集,现代系统默认提供)
⚡ 性能比较慢,特别是在连接多的时候非常快,适合大连接场景
🔍 精度/功能功能老旧,部分信息不够详细更精确,功能丰富
🧾 输出格式人类友好,但解析起来不太标准化输出格式更适合脚本处理
✅ 推荐程度已逐步被淘汰(不建议用于新脚本)官方推荐使用,现代 Linux 的首选工具
  • 进程正在使用端口
lsof -i :8080

lsof:List Open Files,是一个列出系统打开文件的工具(在 Linux 中,"一切皆文件",网络连接也算是“打开的文件”)。

-i :8080:表示筛选出网络连接中涉及端口 8080 的条目,不管是 TCP 还是 UDP,监听还是已连接。
  • 检查端口是否可访问
telnet 服务器IP 9000  # 测试连通性
curl http://服务器IP:9000  # 测试 HTTP 访问

查询文件所在位置

  • find 命令
find是最常用也是最强大的查找命令,它可以查找任何类型的文件。find命令的一般格式为:find <指定目录><指定条件><指定动作>,即find pathname -options [-print -exec -ok]
参数解释:
  pathname:pathname为搜索的目录及其子目录,默认情况下为当前目录
  常用的option选项:
  -name:按文件名来查找文件
  -user:按照文件的所属用户来查找文件
  -group:按照文件所属的组来查找文件
  -perm:按照文件权限来查找文件
  -prune:不在当前指定目录中查找
  -mtime -n +n:按照文件修改时间来查找文件,-n表示文件修改时间距现在n天以内,+n表示文件修改时间据现在n天以前
  -type:查找某一类型的文件(b:块设备文件;d:目录文件;c:字符设备文件;p:管道文件;l:链接文件;f:普通文件)
  -nogroup:查找无有效所属组的文件,即文件所属的组在/etc/group中不存在
  -nouser:查找无有效所属用户的文件,即文件的所属用户在/etc/passwd中不存在

举例:

[root@Zuo /]# find -name "passwd"  #在当前目录及其子目录下查找名为passwd的文件
./usr/bin/passwd
./etc/passwd
./etc/pam.d/passwd
 
[root@Zuo /]# find . -path ./etc -prune -o -name "passwd"  #在当前目录及其子目录(除了/etc目录及其子目录)下查找名为passwd的文件。
./usr/bin/passwd

注意:find命令不加任何参数时,表示搜索路径为当前目录及其子目录,默认的动作为-print,即不过滤任何结果,也就是说输出所有的文件。

  • locate命令

locate命令实际是"find -name"的另一种写法,但是查找方式跟find不同,它比find快得多。因为它不搜索具体目录,而是在一个数据库(/var/lib/locatedb)中搜索指定的文件。此数据库含有本地文件的所有信息,此数据库是Linux系统自动创建的,数据库由updatedb程序来自动更新,updatedb是由cron daemon周期性建立的,默认情况下为每天更新一次,所以用locate命令你搜索不到最新更新的文件,除非你在用locate命令查找文件之前手动的用updatedb命令更新数据库。

前提:需要安装locate(也就是mlocate工具)
sudo dnf install mlocate -y

第一次使用需要更新数据库
sudo updatedb

命令使用
locate nginx.conf

注意:每次有新文件更新和删除之后,在updatedb之前数据库中保存的文件信息不会改变,即新添加一个文件之后,updatedb之前用locate搜索不到指定的文件。同样再删除一个文件信息已经在数据库中的文件时,updatedb之前用locate照样能搜索到该文件的信息,尽管此时该文件已经不存在了。

  • whereis 命令

whereis命令用的不多,因为它只能用来查找二进制文件(-b)、源代码文件(-s)、说明文件(-m)。如果省略参数则返回所有的信息。

[root@Gin scripts]# whereis --help
whereis [ -sbmu ] [ -SBM dir ... -f ] name...
[root@Gin scripts]# whereis find
find: /bin/find /usr/bin/find /usr/share/man/man1/find.1.gz /usr/share/man/man1p/find.1p.gz
[root@Gin scripts]# whereis -b find
find: /bin/find /usr/bin/find
[root@Gin scripts]# whereis -m find
find: /usr/share/man/man1/find.1.gz /usr/share/man/man1p/find.1p.gz
[root@Gin scripts]# whereis -s find
find:
  • which 命令

which命令是在PATH变量指定的路径中搜索指定的系统命令的位置。用echo $PATH可显示当前PATH变量的值。

[root@Gin scripts]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@Gin scripts]# which find
/bin/find

Last updated: