Я всегда хочу убить идентификатор процесса, который прослушивает порт 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 вывода первой команды, но не получилось.
Вот оно (без xargs
):
lsof -i tcp:8080 | while read cmd pid rest; do ((pid)) && kill -9 $pid; done
Во-первых, вы хотите, чтобы опция -t
имела значение lsof, которое генерирует только pids. Вы также можете указать kill pids:
kill -9 $(lsof -ti tcp:3000)
Если вы делаете это много, создайте псевдоним
alias kill3000='kill -9 $(lsof -ti tcp:3000)'