在运维工作的时候,端口号被占用是常见的问题,我们可以用到多个方法去解决,在这里,我们常见的有ss 命令来快速检查。ss(Socket Statistics)是 netstat 的现代替代工具,速度更快,功能更强大。
ss -tulnp # 查看所有 TCP/UDP 监听端口及对应进程
这是常用的格式,具体的参数我们可以看下面。
-t:TCP 端口
-u:UDP 端口
-l:仅显示监听(LISTEN)状态的端口
-n:以数字形式显示端口(不解析服务名称)
-p:显示占用端口的进程信息
示范输出:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))
tcp LISTEN 0 80 127.0.0.1:3306 0.0.0.0:* users:(("mysqld",pid=5678,fd=12))
我们可以使用 ss 检查端口是否被占用
ss -tulnp | grep ":端口号"
比如检查80端口:
ss -tulnp | grep ":80"
示范输出:
tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=9102,fd=6))