Upstart, como iniciar automaticamente um trabalho após a inicialização do MySQL no momento da inicialização?

Upstart, como iniciar automaticamente um trabalho após a inicialização do MySQL no momento da inicialização?

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 onposso 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:

  1. 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
    
  2. Reinício

  3. Verifique cat /tmp/myjobs.logou abra sudo tail -f /tmp/myjobs.logem outra janela.
  4. Tente executar o job-A novamentesudo start joba
  5. 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. stdoutproblema de buffer, não está relacionado ao upstart. Os trabalhos são executados na sequência correta.

informação relacionada