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

3

Meu trabalho é dependente do MySQL. Então eu quero que meu trabalho possa ser iniciado após o MySQL.

Eu leio o upstart livro de receitas e acho que start on pode iniciar automaticamente um trabalho.

start on started mysql

E isso funciona. Mas eu não quero que o mysql afete meu trabalho depois da inicialização. Quando eu parar meu trabalho, ele será reiniciado reiniciando o mysql. Como evitar isso?

    
por Feng Yu 30.05.2015 / 13:27

1 resposta

1

Crie um arquivo de bloqueio na pasta /tmp/ para rastrear que seu trabalho já está em execução. Aqui um exemplo:

  1. 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
    
  2. Reinicializar

  3. Verifique cat /tmp/myjobs.log ou abra sudo tail -f /tmp/myjobs.log em outra janela.
  4. Tente executar o job-A novamente sudo start joba
  5. 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.

    
por user.dz 02.06.2015 / 23:40

Tags