Você também pode fazer isso:
kill -9 $( lsof -i:?0003 -t )
Eu tenho um processo que escuta em uma porta TCP (? 0003). De tempos em tempos, cai - mal. Ele pára de funcionar, mas continua ocupando a porta por algum tempo, então nem posso reiniciá-la. Eu estou olhando para automatizar isso.
O que eu faço agora é:
netstat -ntlp |grep -P "\*\:\d0003"
Para ver o que é o PID e, em seguida:
kill -9 <pid>
Alguém tem um script (ou EXE para esse assunto) que ligaria os dois passos juntos, ou seja. analisar o PID do primeiro comando e passá-lo para o segundo?
kill $(netstat -ntpl 2>/dev/null | egrep "^tcp .*:[0-9]0003"|awk '{print $7}'|cut -d / -f 1 )
Você pode fazer kill -9
em vez de achar que o -9 é obrigatório. Eu redireciono o stderr netstat porque ele omite uma mensagem quando executado como não-raiz, o que não é importante para essa finalidade. Eu incluo o tcp no regex para filtrar o tcp6.
lá vai você, uma linha para você
netstat -ntlp | awk '$4~/:*0003$/{gsub(/\/.*/,"",$NF);cmd="kill -9 "$NF;system(cmd)}'
Assumo que o comando python
é apenas o primeiro termo no comando completo, certo?
Se você tiver o nome do script sendo executado, poderá ver algo como pgrep -f
Se tiver certeza da exclusividade, também é possível usar o pkill -f
Que tal killall <command>
há mais de um desses processos?
Se isso não funcionar, tente:
PID='netstat -ntlp |grep -P "\*\:\d0003"'; kill -9 $PID
Isso deve fazer o truque.
Talvez o comando do fusor com as opções -k e -n possa ajudar. Diga "man fuser" para mais informações.