Я использую Tomcat, и иногда, когда я говорю, чтобы он остановился, он не завершает процесс должным образом.
Мой способ обойти это тоже сделать:
lsof -i tcp:8080
какие выводы:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 888 root 35u IPv6 780659 0t0 TCP *:http-alt (LISTEN)
java 888 root 39r IPv6 790103 0t0 TCP localhost:58916->localhost:http-alt (CLOSE_WAIT)
java 888 root 40r IPv6 792585 0t0 TCP localhost:58936->localhost:http-alt (CLOSE_WAIT)
java 888 root 75r IPv6 785553 0t0 TCP localhost:58701->localhost:http-alt (CLOSE_WAIT)
java 888 root 77r IPv6 787642 0t0 TCP localhost:58814->localhost:http-alt (CLOSE_WAIT)
java 888 root 130u IPv6 783894 0t0 TCP localhost:58686->localhost:http-alt (CLOSE_WAIT)
java 888 root 353u IPv6 780929 0t0 TCP localhost:58632->localhost:http-alt (CLOSE_WAIT)
Я тогда бегу
kill -9 pid
Я хочу получить все номера pid и убить их. Дело в том, что я не знаю, как изолировать это поле.
tomcat
открыт только один процесс, вы можете использоватьkillall -9 tomcat
Ответы:
Существует
-t
(краткий) вариантlsof
, который, кажется, делает именно то, что вы ищете, т.е.Видеть
man lsof
Предполагая, что у вас есть необходимые разрешения, вы можете передать результат
kill
в виде списка PID с подстановкой команд:источник
Не забудьте
--no-run-if-empty
вариант убить :)Таким образом, kill будет запущен только при прослушивании процесса, не нужно выполнять проверку самостоятельно.
источник
lsof -i tcp:8080
производит вывод, затем| egrep -v "COMMAND PID USER"
отбрасывает строку заголовка, затем| awk '{print $2}'
печатает 2-е поле,| sort -n
подготавливает числа, для| uniq
которых каждый уникальный PID выводится только один раз. Соединение всего этого дает:Но
pkill -KILL tomcat
илиkillall -KILL tomcat
проще.источник
Один лайнер от @waltinator великолепен.
Я добавлю еще немного аромата к нему:
ИЛИ
источник
Это сценарий, который я придумал с небольшой проверкой ошибок.
источник
Вот простая функция раковины рыбы
Просто вставьте эту присоску в файл в этом месте,
~/.config/fish/functions/kill-port.fish
и все готово. Вы можете назвать это какkill-port 8000
источник