Linux 常用命令
防火墙设置
开启防火墙
javasystemctl start firewalld关闭防火墙
javasystemctl stop firewalld查看防火墙状态
javasystemctl status firewalld查看开发端口列表
javafirewall-cmd --list-ports查看已配置的所有规则
javafirewall-cmd --list-all开放防火墙端口
javafirewall-cmd --zone=public --add-port=8080/tcp --permanent 命令含义: –zone #作用域 –add-port=8080/tcp #添加端口,格式为:端口/通讯协议 –permanent #永久生效,没有此参数重启后失效注:关闭端口同开放端口,只需把 add 改成 remove
指定端口和IP访问
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.211.103" port protocol="tcp" port="80" accept"
移除规则
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.211.103" port protocol="tcp" port="80" accept"
重启防火墙(开放或者关闭端口需要重启防火墙)
javafirewall-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对比
| 特性 | netstat | ss |
|---|---|---|
| 📦 所在工具包 | 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