Upstart, как автоматически запустить задание после запуска MySQL во время загрузки?

Upstart, как автоматически запустить задание после запуска MySQL во время загрузки?

Моя работа зависит от MySQL. Поэтому я хочу, чтобы моя работа могла начаться после MySQL.

Я прочиталкулинарная книга upstartи я нахожу, start onчто можно автоматически запустить задание.

start on started mysql

И это работает. Но я не хочу, чтобы mysql повлиял на мою работу после загрузки. Когда я останавливаю свою работу, она будет перезапущена путем перезапуска mysql. Как этого избежать?

решение1

Создайте файл блокировки в /tmp/папке, чтобы отслеживать, что ваша работа уже запущена. Вот пример:

  1. Создайте следующие два файла конфигурации заданий 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. Перезагрузить

  3. Проверить cat /tmp/myjobs.logили открыть sudo tail -f /tmp/myjobs.logв другом окне.
  4. Попробуйте запустить задание A еще разsudo start joba
  5. Проверьте /tmp/myjobs.log, см. примечание по обходу:

    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
    

Примечание:Для каждого запуска у нас есть 3 строки. Сортировка строк здесь не имеет значения. stdoutпроблема буферизации, она не связана с upstart. Задания запускаются в правильной последовательности.

Связанный контент