Uma maneira eficiente é alterar seu script onde ele fecha todos os fluxos de entrada, soquete e outros e, em seguida, abri-lo novamente (como uma reinicialização completa).
Mas o seu caminho também é bom aqui é como você faz isso: man killall
Eu tenho o script python sendo executado em uma máquina remota, ele para de responder periodicamente, portanto, ssh in, mato o processo existente e, em seguida, reinicio-o. Eu tenho que fazer isso várias vezes por semana e está causando longos períodos de inatividade quando não estou por perto. Eu gostaria de reiniciá-lo a cada hora pelo cron - mas o reinício não funciona a menos que eu mate o processo primeiro. Como eu iria matar o processo pelo cron? Ou haveria uma solução mais eficiente?
Uma maneira eficiente é alterar seu script onde ele fecha todos os fluxos de entrada, soquete e outros e, em seguida, abri-lo novamente (como uma reinicialização completa).
Mas o seu caminho também é bom aqui é como você faz isso: man killall
Uma maneira simples de ativar a eliminação e reinicialização do seu processo seria o comando killall -9 $name_of_binary
.
Um método mais sofisticado é criar um arquivo com o PID de processo. Por exemplo, poderia ser iniciado assim:
$name_of_binary &
echo $! > $pidfile
Então o processo pode ser morto assim:
kill -9 $(cat $pidfile) && rm $pidfile
Você também pode incorporar verificações que $pidfile
não existem antes de iniciar seu processo & c.