在Linux系统中,查看端口及其对应的服务器进程是常见的网络管理任务。以下是一些常用的命令和方法:
netstat
命令netstat
是一个强大的网络统计工具,可以显示网络连接、路由表、接口统计等。
netstat -tuln
-t
:显示TCP连接。-u
:显示UDP连接。-l
:仅显示监听套接字。-n
:以数字形式显示地址和端口号。示例输出:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::80 :::* LISTEN
udp 0 0 0.0.0.0:53 0.0.0.0:*
ss
命令ss
是 netstat
的替代品,性能更好,显示的信息更详细。
ss -tuln
参数含义与 netstat
相同。
示例输出:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 100 *:80 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 :::80 :::*
UNCONN 0 0 0.0.0.0:53 0.0.0.0:*
lsof
命令lsof
可以列出当前系统打开的文件和使用这些文件的进程。
sudo lsof -i -n -P | grep LISTEN
-i
:显示网络相关的文件。-n
:不将IP地址转换为域名。-P
:不将端口号转换为服务名。示例输出:
sshd 1234 root 3u IPv4 12345 0t0 TCP *:22 (LISTEN)
nginx 5678 www-data 8u IPv4 23456 0t0 TCP *:80 (LISTEN)
原因:可能是权限不足或端口被内核模块占用。 解决方法:
sudo
提升权限。lsmod
查看加载的内核模块。原因:多个进程尝试绑定到同一个端口。 解决方法:
netstat
或 ss
查找占用端口的进程ID(PID)。kill
命令终止冲突的进程,或修改其中一个服务的端口配置。假设需要查找占用80端口的进程并终止它:
# 查找占用80端口的进程ID
sudo lsof -i :80
# 假设找到的PID是1234
sudo kill -9 1234
通过以上方法,可以有效管理和排查Linux系统中的端口及对应服务器进程问题。
领取专属 10元无门槛券
手把手带您无忧上云