Несколько раз случалось такое, что мне не удавалось стандартными средствами перезапустить NGiNX на сервере. Просто игнорировались все команды, и хоть ты тресни. Оставалось только одно средство — «убить» процесс командой kill , но для её запуска требуется знать PID процесса. И тут потребовалось перепробовать массу вариантов, как его узнать, пока я не наткнулся на полезную команду, которая есть в стандартном дистрибутиве Debian 9 lsof , которая и спасла в итоге ситуацию.
Как с помощью команды lsof выяснить процесс, который слушает нужный порт в Debian 9
Читать документацию по lsof пока нет желания, поэтому сразу к делу. Для того, чтобы определить, какой процесс в linux занимает 80-й порт, требуется ввести команду:
lsof -i :80 | grep LISTEN
Для того, чтобы узнать программы, слушающие другие порты, вместо 80, нужно указать номер нужного порта. Например, для порта 8080 команда будет выглядеть так:
lsof -i :8080 | grep LISTEN
Как узнать, какая программа слушает порт 22 (ssh) с помощью команды lsof
В качестве примера того, как и в каком формате выдаёт данные команда lsof , рассмотрим, что у нас в системе слушает ssh — порт 22:
Как открыть порт 80 в Windows без перезагрузки?
- название процесса sshd
- PID процесса 777
- пользователь, под которым запущен процесс root
Как остановить процесс, который слушает порт на сервере
Узнав PID процесса, никто не помещает его остановить командой kill :
kill 777
Вместо 777 нужно ввести PID того, процесса, который требуется остановить (если больше ничего не помогает). Ну и для того, чтобы «убить» процесс наверняка, можно использовать опцию -9. Результат — всегда срабатывает:
kill -9 777
Но, лучше всё-таки, когда до kill дело не доходит и всё останавливается и запускается, в общем, реагирует по сценарию того процесса, которым требуется управлять.
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! 😉
Источник: mb4.ru
Какой процесс занимает порт
Частенько появляется необходимость узнать, какой из запущенных процессов занимает определенный сетевой порт. Особенно это актуально если порт не относится к числу стандартных, то есть 22,21,80 и т.д. и так понятно кто занимает (SSH, FTP, HTTP), тем более что в выдаче netstat, это написано после PID процесса, но бывают исключения. Например, смотрим вывод netstat’а
Порт 6010, имя процесса не известно, зато известен PID процесса, это 1548. По номеру PID смотрим что это за процесс:
Ну или можно более подробно, используя lsof:
Порт 6010 используется сервисом openssh для X11 forwarding (проброска графических рабочих столов). Если этот функционал не используется, лучше отключить его в файле конфигурации sshd сервера /etc/ssh/sshd_config
80 порт для Apache. Ошибка 1. Сould not bind to address 0.0 0.80. phpNT
X11Forwarding no
после чего нужно перезапустить и сервис и переподключиться. В windows это можно сделать так,жмем WIN+R, вписываем cmd, жмем Ok, далее уже в командной строке
netstat -an . TCP 0.0.0.0:10001 0.0.0.0:0 LISTENING 1592 .
PID процесса указан в последней колонке. Далее выполняем команду
tasklist | findstr «1592» tonido.exe 1592 Console 1 25 960 КБ
Источник: vds-admin.ru