убить процесс на указанном c порту по имени - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть процесс, работающий на порте 3200, который взаимодействует с другими процессами на других портах.

Я знаю, что могу завершить процесс на данном порту, выполнив kill -9 $(lsof -t -i:3200).

Моя проблема в том, что вывод lsof также содержит другие процессы, которые обмениваются данными с тем, который я хочу уничтожить:

COMMAND         PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java          16379 tirafesi  102u  IPv6 156964      0t0  TCP localhost:41162->localhost:3200 (ESTABLISHED)
python3       16793 tirafesi    3u  IPv4 158199      0t0  TCP localhost:51101->localhost:3200 (ESTABLISHED)
processtokill 16802 tirafesi    8u  IPv4 156963      0t0  TCP *:3200 (LISTEN)
processtokill 16802 tirafesi   10u  IPv4 158788      0t0  TCP localhost:3200->localhost:51101 (ESTABLISHED)
processtokill 16802 tirafesi   11u  IPv4 156965      0t0  TCP localhost:3200->localhost:41162 (ESTABLISHED)

Как я могу уничтожить процесс, который находится на порте 3200 и называется processtokill

Ответы [ 2 ]

2 голосов
/ 03 апреля 2020

Вы хотите завершить процесс, СЛУШАЮЩИЙ на порте 3200, так:

kill -9 $(lsof -t -i:3200 -sTCP:LISTEN)
0 голосов
/ 03 апреля 2020

Я бы попробовал:

kill -9 $(lsof -i:3200 | grep ^processtokill | awk '{print $2}' | uniq)
...