Um die Portbelegung unter Linux anzuzeigen, können Sie die Befehlelsofundnetstatverwenden.


lsof

lsof (list open files) ist ein Tool, das geöffnete Dateien auf dem aktuellen System auflistet.

lsof-Syntax zum Überprüfen der Portbelegung:

lsof -i:端口号

Beispiel

Prüfen Sie die Belegung von Port 8000 auf dem Server:

# lsof -i:8000
COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nodejs  26993 root   10u  IPv4 37999514      0t0  TCP *:8000 (LISTEN)

Es ist zu erkennen, dass Port 8000 bereits von einem leichtgewichtigen nodejs-Dienst belegt ist.

lsof -i erfordert Root-Benutzerrechte für die Ausführung, wie unten gezeigt:

Weitere lsof-Befehle sind wie folgt:

lsof -i:8080:查看8080端口占用
lsof abc.txt:显示开启文件abc.txt的进程
lsof -c abc:显示abc进程现在打开的文件
lsof -c -p 1234:列出进程号为1234的进程所打开的文件
lsof -g gid:显示归属gid的进程情况
lsof +d /usr/local/:显示目录下被进程开启的文件
lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长
lsof -d 4:显示使用fd为4的进程
lsof -i -U:显示所有打开的端口和UNIX domain文件

netstat

netstat -tunlpWird verwendet, um zugehörige Informationen wie TCP-, UDP-Ports und Prozesse anzuzeigen.

netstat-Syntax zum Überprüfen der Portbelegung:

netstat -tunlp | grep 端口号
  • -t (tcp) nur tcp-bezogene Optionen anzeigen
  • -u (udp) nur udp-bezogene Optionen anzeigen
  • -n zeigt keine Aliase an und wandelt alles, was als Zahl angezeigt werden kann, in eine Zahl um
  • -l nur Dienste im Status Listen (listening) auflisten
  • -p zeigt den Programmnamen an, der die zugehörige Verbindung aufgebaut hat
Um beispielsweise Port 8000 zu prüfen, verwenden Sie den folgenden Befehl:
# netstat -tunlp | grep 8000
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      26993/nodejs   

Weitere Befehle:

netstat -ntlp   //查看当前所有tcp端口
netstat -ntulp | grep 80   //查看所有80端口使用情况
netstat -ntulp | grep 3306   //查看所有3306端口使用情况

kill

Nachdem Sie den Prozess gefunden haben, der den Port belegt, können Sie zum Beenden des Prozesses den Befehl kill verwenden:

kill -9 PID

Im obigen Beispiel sehen wir, dass die zu Port 8000 gehörende PID 26993 ist. Verwenden Sie den folgenden Befehl, um den Prozess zu beenden:

kill -9 26993