Для просмотра занятости портов в 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 отображать имя программы, установившей соответствующее соединение
# 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