我有两个新贵脚本,一个用于启动 teampeak 服务器,另一个用于启动 teampeak 机器人,如下所示。
团队发言服务:
[Unit]
Description=Teamspeak Server
After=network.target
[Service]
WorkingDirectory=/home/teamspeak/
User=teamspeak
Group=teamspeak
Type=forking
ExecStart=/home/teamspeak/ts3server_startscript.sh start
ExecStop=/home/teamspeak/ts3server_startscript.sh stop
ExecReload=/home/teamspeak/ts3server_startscript.sh restart
PIDFile=/home/teamspeak/ts3server.pid
RestartSec=15
Restart=always
[Install]
WantedBy=multi-user.target
tsbot.service
[Unit]
Description=Teamspeak Bot
After=network.target
[Service]
WorkingDirectory=/home/tsbot/
User=tsbot
Group=tsbot
Type=forking
ExecStart=/home/tsbot/jts3servermod_startscript.sh start
ExecStop=//home/tsbot/jts3servermod_startscript.sh stop
ExecReload=/home/tsbot/jts3servermod_startscript.sh restart
PIDFile=/home/tsbot/jts3servermod.pid
RestartSec=15
Restart=always
[Install]
WantedBy=multi-user.target
我想知道是否只有在 teampeak.service 成功启动后才可以执行 tsbot.service 脚本,我尝试添加After=network.target teamspeak.service
到脚本中,但没有成功。
答案1
我对 upstart 没有任何实践经验,所以如果 upstart 语法错误,我深表歉意,但实际的 bash 脚本应该是可靠的。它所做的只是循环,在启动 tsbot 服务之前检查 teampeak 服务是否正在运行(检查之间等待 5 秒)。
script
while true; do
if [[ $(pgrep teamspeak) ]]; then
systemctl start tsbot.service
break
fi
sleep 5
done
end script