Precisa fazer um comando de atalho usando xargs

1

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.

    
por Abdul Shajin 04.10.2011 / 18:44

2 respostas

3

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)'
    
por glenn jackman 04.10.2011 / 19:24
1

Aqui está (sem xargs ):

lsof -i tcp:8080 | while read cmd pid rest; do ((pid)) && kill -9 $pid; done
    
por enzotib 04.10.2011 / 19:17