Precisa fazer um comando de atalho usando xargs

Precisa fazer um comando de atalho usando xargs

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 -topçã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

informação relacionada