Primeiro, você quer a opção -t
para lsof, que só emite pids. Você também pode matar uma lista de pids, então:
kill -9 $(lsof -ti tcp:3000)
Se você fizer isso muito, crie um alias
alias kill3000='kill -9 $(lsof -ti tcp:3000)'
Eu sempre quero matar um id de processo que escuta em Port 3000. Então, atualmente estou usando,
1.lsof -i tcp:3000
fornecerá a saída como
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 6697 xxxx 5u IPv4 251982 0t0 TCP *:3000 (LISTEN)
e eu vou matar o PID usando,
2. kill -9 6697
Eu quero criar um programa bash que faça esse processo automaticamente.
Eu tentei usar o xargs para obter o PID da saída do primeiro comando, mas falhei.
Primeiro, você quer a opção -t
para lsof, que só emite pids. Você também pode matar uma lista de pids, então:
kill -9 $(lsof -ti tcp:3000)
Se você fizer isso muito, crie um alias
alias kill3000='kill -9 $(lsof -ti tcp:3000)'
Aqui está (sem xargs
):
lsof -i tcp:8080 | while read cmd pid rest; do ((pid)) && kill -9 $pid; done