Shell script, чтобы убить процесс, прослушивающий порт 3000?
Я хочу определить псевдоним bash с именем kill3000 для автоматизации следующей задачи:
$ lsof -i:3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 13402 zero 4u IPv4 2847851 0t0 TCP *:3000 (LISTEN)
$ kill -9 13402
Ответ 1
alias kill3000="fuser -k -n tcp 3000"
Ответ 2
Попробуйте следующее:
kill -9 $(lsof -i:3000 -t)
Флаг -t - это то, что вы хотите: оно отображает PID и ничего больше.
UPDATE
Если процесс не найден, и вы не хотите видеть сообщение об ошибке:
kill -9 $(lsof -i:3000 -t) 2> /dev/null
Предполагая, что вы используете bash.
UPDATE
Предложение Basile превосходно: сначала нужно попытаться завершить процесс, как правило, будет убивать -TERM, если это не удастся, тогда kill -KILL (AKA kill -9):