
Моя работа зависит от MySQL. Поэтому я хочу, чтобы моя работа могла начаться после MySQL.
Я прочиталкулинарная книга upstartи я нахожу, start on
что можно автоматически запустить задание.
start on started mysql
И это работает. Но я не хочу, чтобы mysql повлиял на мою работу после загрузки. Когда я останавливаю свою работу, она будет перезапущена путем перезапуска mysql. Как этого избежать?
решение1
Создайте файл блокировки в /tmp/
папке, чтобы отслеживать, что ваша работа уже запущена. Вот пример:
Создайте следующие два файла конфигурации заданий 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
Перезагрузить
- Проверить
cat /tmp/myjobs.log
или открытьsudo tail -f /tmp/myjobs.log
в другом окне. - Попробуйте запустить задание A еще раз
sudo start joba
Проверьте
/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. Задания запускаются в правильной последовательности.