두 개의 시작 스크립트가 있습니다. 하나는 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
tsbot.service 스크립트가 teampeak.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