Иногда нужно срочно освободить порт: сервис завис, не перезапускается, новый экземпляр не стартует, а разбираться почему будем потом. Задача простая: найти процесс по порту и завершить его.
▪️ Классический способ. Смотрим, кто слушает порт, через ss, находим PID и убиваем процесс:
ss -tulnp | grep 8080
tcp LISTEN 0 5 0.0.0.0:8080 0.0.0.0:* users:(("python3",pid=5152,fd=3))
kill 5152
Рабочий вариант, но требует двух шагов.
▪️ Быстрее через lsof. Гораздо удобнее использовать lsof, который отлично работает не только с файлами, но и с сетевыми соединениями:
lsof -i:8080
Пример вывода:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python3 5156 root 3u IPv4 41738 0t0 TCP *:http-alt (LISTEN)
И сразу завершаем процесс:
kill 5156
А если хочется вообще в одно действие:
lsof -i:8080 -t | xargs kill
▪️ Почему lsof? Со временем начинаешь использовать lsof всё чаще:
lsof -i
lsof -i TCP:25
lsof -i TCP@1.2.3.4
Очень наглядно показывает, кто, куда и по какому протоколу подключен.
▪️ Совсем ленивый вариант - killport. Есть утилита killport, которая делает все то же самое одной командой:
killport 8080
В стандартных репозиториях ее обычно нет, придется скачать готовый бинарник.
На Linux без нее легко обойтись, а вот на Windows такая утилита особенно полезна.
Можно сначала проверить, что именно будет завершено:
killport 445 --dry-run
Would kill process 'System' listening on port 445
Сначала смотрим, потом убиваем - все как надо.
#linux #network
🧑💻 NetworkAdmin