我有以下三项服务: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
答案1
也许你可以/etc/rc.local
使用以下命令运行服务&&
编辑/etc/rc.local
sudo nano /etc/rc.local
并添加命令
start service first && start service second
&&
让你根据上一个命令是否成功完成来执行某些操作
更准确地说,&&
将评估第二个表达式当且仅当第一个表达式返回 0。