Для просмотра занятости портов в Linux можно использовать командуlsofиnetstat.


lsof

lsof (список открытых файлов) — это инструмент, который выводит список открытых файлов в текущей системе.

Синтаксис lsof для проверки занятости портов:

lsof -i:端口号

Пример

Проверьте занятость порта 8000 на сервере:

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

Видно, что порт 8000 уже занят легковесным сервисом nodejs.

lsof -i требует прав пользователя root для выполнения, как показано ниже:

Другие команды lsof приведены ниже:

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 -tunlpИспользуется для отображения соответствующей информации, такой как порты TCP, UDP и процессы.

Синтаксис netstat для проверки занятости портов:

netstat -tunlp | grep 端口号
  • -t (tcp) отображать только параметры, связанные с tcp
  • -u (udp) показывать только опции, связанные с udp
  • -n не отображать псевдонимы, преобразовывать всё, что можно показать как число, в число
  • -l выводить только службы в состоянии Listen (прослушивание)
  • -p отображать имя программы, установившей соответствующее соединение
Например, чтобы проверить порт 8000, используйте следующую команду:
# netstat -tunlp | grep 8000
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      26993/nodejs   

Другие команды:

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

kill

После обнаружения процесса, занимающего порт, если вы хотите завершить процесс, можно использовать команду kill:

kill -9 PID

В приведённом выше примере видно, что PID, соответствующий порту 8000, — 26993. Используйте следующую команду, чтобы завершить процесс:

kill -9 26993