Meu trabalho depende do MySQL. Então, eu quero que meu trabalho possa ser iniciado após o MySQL.
Eu li olivro de receitas iniciantee acho que start on
posso iniciar automaticamente um trabalho.
start on started mysql
E funciona. Mas não quero que o mysql afete meu trabalho após a inicialização. Quando eu parar meu trabalho, ele será reiniciado reiniciando o mysql. Como evitar isso?
Responder1
Crie um arquivo de bloqueio na /tmp/
pasta para rastrear se seu trabalho já está em execução. Aqui um exemplo:
Crie estes dois arquivos de configuração de jobs iniciais:
/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
Reinício
- 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 a nota de desvio: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
Observação:Para cada execução, temos 3 linhas. Não importa a classificação das linhas aqui. stdout
problema de buffer, não está relacionado ao upstart. Os trabalhos são executados na sequência correta.