指定服务运行后执行Upstart脚本

指定服务运行后执行Upstart脚本

我有两个新贵脚本,一个用于启动 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

相关内容