У меня есть следующие три службы: apache2
, serviceFirst
и serviceSecond
.
Я хочу запустить serviceFirst
, когда apache2
запущен и работает
Я хочу запустить serviceSecond
, когда serviceFirst
запущен и работает
файл /etc/init/serviceFirst.conf
:
# Info
description "UDP server"
author "Reggie Williams"
# Events
start on apache2
stop on shutdown
# Automatically respawn
respawn
respawn limit 20 5
script
exec >/var/log/test.debug 2>&1 #so I can track when the service runs
echo Gotcha...
[ $(exec /usr/bin/php -f /var/www/server/udp/bin/serverrunner.php) = 'critical_error' ] && (stop; exit 1;)
end script
файл /etc/init/serviceSecond.conf
:
# Info
description "UDP client"
author "Reggie Williams"
# Events
start on (started serviceFirst)
stop on shutdown
# Automatically respawn
respawn
respawn limit 20 5
script
exec >/var/log/test2.debug 2>&1 #so I can track when the service runs
echo Gotcha2...
[ $(exec /usr/bin/php -f /var/www/server/udp/bin/clientrunner.php) = 'critical_error' ] && (stop; exit 1;)
end script
Итак, в этих двух сервисах я запускаю свои скрипты. Кроме того, я создаю один файл для каждой службы и сохраняю их в /var/log
.
Однако, когда я проверяю метки времени создания этих двух файлов, я вижу, что test.debug
был создан позже, чем test2.debug
.
Итак, мой вопрос: как это возможно и как сделать так, чтобы serviceSecond
действительно запускалось после serviceFirst
и apache
?
Возможно, можно выполнить сервис от /etc/rc.local
с &&
редактирование /etc/rc.local
sudo nano /etc/rc.local
и добавить, что команда
start service first && start service second
&&
позволяет Вам сделать что-то на основе того, оценит ли предыдущая команда, завершенная успешно
, Чтобы быть более точно, &&
, вторую эквивалентность выражения , которую первое выражение возвращает 0 .