지정된 서비스가 실행된 후 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

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

관련 정보