Я оказался в ситуации с TCP-портом в режиме прослушивания без назначенного ему процесса.
Есть ли способ закрыть этот порт без перезапуска сервера?
Проверка статуса порта:
me> netstat -tan | grep 8888
tcp 0 0 :::8888 :::* LISTEN
Ищем ответственного за процесс:
me> lsof -i -P | grep 8888
Команда выше ничего не возвращает
Пытаться netstat -ltpn | grep 8888
Вы описываете невозможный сценарий.
Я считаю, что в предыдущих плакатах не хватало того факта, что вы пытаетесь сопоставить порт процессу, которым вы не владеете. Поэтому ваш lsof
ничего не возвращает, поскольку у этих инструментов нет разрешения на просмотр /proc
записи, которые облегчили бы отображение этого порта -> PID. Ваш netstat
в команде также отсутствует флаг -p. Запустите эти команды как root
тогда все станет намного яснее.
запустить
fuser 8888/tcp
Это должно перечислить pid, работающие на порту.
netstat анализирует / proc / net / [tcp | udp | tcp6 | udp6], а затем просматривает / proc / $ pid / -area, чтобы найти соответствующие процессы, в то время как fuser и lsof «только» перемещаются по всему / proc / $ pid / -area, чтобы узнать, какие процессы известны для каких сокетов. В конечном итоге эти два разных подхода могут привести к разным результатам.
Если сокету не назначен процесс, есть два варианта:
Например, монтирование общего ресурса через NFS действительно приводит к аналогичным «прослушивающим» портам. Таким образом, эти порты снова появятся при подключении общего ресурса NFS и исчезнут после размонтирования общего ресурса NFS.
это страница рекомендует запустить sudo lsof -i tcp:8888
если netstat - это просто прочерк для имени процесса.
В моем случае он оказался во владении зомби процесс, странный, я знаю.
$ sudo lsof -i tcp:8888
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
my-proc-name 38116 root 16u IPv6 326070554 0t0 TCP *:8888 (LISTEN)
Затем вы можете посмотреть вывод «ps» для 38116 (в данном случае), чтобы увидеть несуществующий процесс.
ps -ef grep 38116
root 38116 1 0 Apr24 ? 00:06:58 [my-proc-name] <defunct>
(я предполагаю, что это какой-то зомби-процесс, который еще не очистился?).
Другой вариант:
sudo ss -apn | grep 8888