Я всегда хочу завершить процесс, который прослушивает порт 3000. Поэтому сейчас я использую,
1.lsof -i tcp:3000
выдаст вывод как,
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 6697 xxxx 5u IPv4 251982 0t0 TCP *:3000 (LISTEN)
и я убью PID с помощью
2.kill -9 6697
Я хочу создать программу bash, которая будет выполнять этот процесс автоматически.
Я попытался использовать xargs, чтобы получить PID вывода первой команды, но безуспешно.
решение1
Во-первых, вам нужна -t
опция lsof, которая выводит только pid. Вы также можете дать kill список pid, так что:
kill -9 $(lsof -ti tcp:3000)
Если вы часто это делаете, создайте псевдоним.
alias kill3000='kill -9 $(lsof -ti tcp:3000)'
решение2
Вот он (без xargs
):
lsof -i tcp:8080 | while read cmd pid rest; do ((pid)) && kill -9 $pid; done