在 Linux 要检查那一个进程 (process) 占用特定埠号, 可以用 netstat 或 lsof 来做, 例如想列出所有开启的埠号, 可以 netstat 指令:
# netstat -ntlp
假如只想输出占用埠号 80 的进程, 可以加上 grep 过滤:
# netstat -ntlp | grep :80
tcp 0 0 :::80 :::* LISTEN 779/httpd
tcp 0 0 :::80 :::* LISTEN 779/httpd
上面可以看到是 httpd 占用埠号 80, 进程的 pid 是 779
除了用 netstat 外, 也可以用 lsof (List Open Files), losf 是非常实用的系统监控工具, 它可以列出进程开启的档案资料, 包括 pipe, socket, 目录, 装置等, 所以 lsof 一样可以检查埠号占用进程, 例如检查占用埠号 80 指令是这样:
# lsof -i tcp:80
轮出结果类似这样:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME httpd 779 root 4u IPv6 30519129 0t0 TCP *:http (LISTEN) httpd 786 apache 4u IPv6 30519129 0t0 TCP *:http (LISTEN) httpd 787 apache 4u IPv6 30519129 0t0 TCP *:http (LISTEN) httpd 788 apache 4u IPv6 30519129 0t0 TCP *:http (LISTEN) httpd 789 apache 4u IPv6 30519129 0t0 TCP *:http (LISTEN) httpd 790 apache 4u IPv6 30519129 0t0 TCP *:http (LISTEN) httpd 791 apache 4u IPv6 30519129 0t0 TCP *:http (LISTEN) httpd 792 apache 4u IPv6 30519129 0t0 TCP *:http (LISTEN) httpd 793 apache 4u IPv6 30519129 0t0 TCP *:http (LISTEN) httpd 852 apache 4u IPv6 30519129 0t0 TCP *:http (LISTEN) httpd 853 apache 4u IPv6 30519129 0t0 TCP *:http (LISTEN) httpd 854 apache 4u IPv6 30519129 0t0 TCP *:http (LISTEN) httpd 922 apache 4u IPv6 30519129 0t0 TCP *:http (LISTEN) httpd 925 apache 4u IPv6 30519129 0t0 TCP *:http (LISTEN) httpd 926 apache 4u IPv6 30519129 0t0 TCP *:http (LISTEN) httpd 927 apache 4u IPv6 30519129 0t0 TCP *:http (LISTEN) httpd 928 apache 4u IPv6 30519129 0t0 TCP *:http (LISTEN) httpd 929 apache 4u IPv6 30519129 0t0 TCP *:http (LISTEN) httpd 930 apache 4u IPv6 30519129 0t0 TCP *:http (LISTEN) |
可以看到占用埠号 80 的进程是 httpd, 用户是 root, pid 是 779, 而后面十几行是 apache 的子进程。