Estou usando o Upstart 1.5 no Ubuntu 12.04 para gerenciar um processo criado por algum usuário, mas precisa ser gerenciado como trabalho do sistema, começando na inicialização, reaparecendo se ele falhar e conseguimos iniciá-lo / interrompê-lo em qualquer momento desejado Então, eu crio seu arquivo .conf em / etc / init e é o seguinte:
description "Start face services recognition and monitors it"
version "1.0"
start on runlevel[5]
stop on runlevel[06]
respawn
expect fork
normal exit 0 TERM STOP
script
exec sh -c /home/verstand/facefeatures
end script
post-stop script
if [ ! $EXIT_STATUS && ! $EXIT_SIGNAL ]
then
exec sudo -u $USER "/sbin/shutdown -r now"
fi
end script
Os sinais aqui são intencionados para reiniciar o sistema em um caso de emergência onde o Upstart não reaparece o processo.
Agora, o problema é quando iniciamos o processo, ele roda bem, com sudo initctl start facefeatures
, mas quando tentamos pará-lo, ele trava e precisamos usar Ctl + C para retornar o controle tty.
Ainda mais, se tentarmos iniciá-lo novamente ou reiniciá-lo, o Upstart relata que ele já está em execução: start/running facefeatures
, mas, se usarmos initctl list
Upstart relata como se o processo estivesse morto: stop/killed facefeatures
Além disso, se reiniciarmos a primeira vez, o processo será executado normalmente, mas se reiniciarmos uma segunda vez, não o faremos mais ...
Qual é o problema do meu arquivo conf? Qual é a maneira correta de fazer isso?