Crie um arquivo de bloqueio na pasta /tmp/
para rastrear que seu trabalho já está em execução. Aqui um exemplo:
-
Crie estes dois arquivos de configuração de jobs upstart:
/etc/init/joba.conf
# job A start on local-filesystems stop on runlevel[016] script /bin/echo job-A started >> /tmp/myjobs.log exec sleep 5 end script
/etc/init/jobb.conf
# job B triggered after A start on started joba script /bin/echo job-B started >> /tmp/myjobs.log if ! [ -f /tmp/jobb.lock ] then /bin/echo " do job-B tasks" >> /tmp/myjobs.log /bin/touch /tmp/jobb.lock else /bin/echo " bypass job-B tasks" >> /tmp/myjobs.log fi exec sleep 5 end script
-
Reinicializar
- Verifique
cat /tmp/myjobs.log
ou abrasudo tail -f /tmp/myjobs.log
em outra janela. - Tente executar o job-A novamente
sudo start joba
-
Verifique
/tmp/myjobs.log
, consulte ignorar nota:job-A started job-B started do job-B tasks job-B started bypass job-B tasks job-A started job-B started job-A started bypass job-B tasks
Nota: Para cada execução, temos 3 linhas. Não importa as linhas de classificação aqui. stdout
problema de buffer, não está relacionado a upstart. Os trabalhos são executados na sequência correta.