一、使用netstat命令
netstat命令是一個命令行工具,能夠打印出網絡連接、路由表、接口狀態等網絡相關信息。其中,netstat -tunlp
可以列出所有佔用端口的進程詳情。其中:
-t
表示列出TCP協議的信息-u
表示列出UDP協議的信息-n
表示不進行DNS解析-l
表示只列出監聽狀態的網絡連接-p
表示列出佔用該端口的進程信息
$ netstat -tunlp
執行命令後,會出現類似以下的結果:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:80 0.0.0.0:* LISTEN 443/apache2
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 498/sshd
tcp6 0 0 ::1:80 :::* LISTEN 443/apache2
udp 0 0 0.0.0.0:68 0.0.0.0:* 433/dhclient
udp6 0 0 :::547 :::* 433/dhclient
從結果中可以看出,PID/Program name一列即為佔用該端口的進程信息。其中,tcp、udp分別表示該條連接使用的協議是TCP還是UDP協議。
二、使用ss命令
ss命令是一個基於netlink協議實現的類似於netstat命令的工具,比netstat命令更快速、更節省系統資源。與netstat不同的是,ss命令可以同時顯示UDP、TCP和RAW等多種類型連接。
$ ss -tunlp
執行完後,會出現類似於netstat命令的結果信息。其中,-t/-u/-n/-l/-p
等參數與netstat命令相同,具體含義也相同。
三、使用lsof命令
lsof命令是一種列出系統文件信息的命令,同時也可以列出進程信息,包括佔用端口的進程信息。
$ lsof -i :80
執行上述命令後,可以列出佔用80端口的進程詳情,如下所示:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 10142 root 7u IPv4 316223 0t0 TCP *:http (LISTEN)
nginx 10144 www-data 7u IPv4 316223 0t0 TCP *:http (LISTEN)
nginx 10145 www-data 7u IPv4 316223 0t0 TCP *:http (LISTEN)
四、使用fuser命令
fuser命令是一個查找佔用指定端口的進程的命令。與其他命令不同的是,這個命令不需要傳遞參數,只需要指定佔用的端口即可。
$ fuser 80/tcp
執行上述命令後,可以顯示出佔用80端口的進程信息,即:
10142/tcp:
10144/tcp:
10145/tcp:
五、總結
以上就是在Debian中查看端口佔用的多種方法。其中,netstat命令是最常用的命令之一,而ss命令則是一個更快、更實用的工具。lsof和fuser命令則可以直接列出佔用端口的進程信息,更加直觀。
原創文章,作者:TPPNO,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/361777.html