Eu sempre quero eliminar um ID de processo que esteja escutando na porta 3000. Atualmente estou usando,
1.lsof -i tcp:3000
dará saída como,
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 6697 xxxx 5u IPv4 251982 0t0 TCP *:3000 (LISTEN)
e vou matar o PID usando
2.kill -9 6697
Quero criar um programa bash que faça esse processo automaticamente.
Tentei usar xargs para obter o PID da saída do primeiro comando, mas falhei.
Responder1
Primeiro, você deseja a -t
opção lsof, que emite apenas pids. Você também pode dar ao kill uma lista de pids, então:
kill -9 $(lsof -ti tcp:3000)
Se você faz muito isso, crie um alias
alias kill3000='kill -9 $(lsof -ti tcp:3000)'
Responder2
Aqui está (sem xargs
):
lsof -i tcp:8080 | while read cmd pid rest; do ((pid)) && kill -9 $pid; done