Execute o script Upstart após a execução de um serviço especificado

3

Eu tenho dois scripts iniciantes, um para iniciar o servidor teamspeak e outro para iniciar o bot de timespeak como mostrado abaixo.

teamspeak.service:

[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

Gostaria de saber se é possível executar o script tsbot.service somente depois que o teamspeak.service foi iniciado com sucesso, tentei adicionar After=network.target teamspeak.service ao script, mas isso não funcionou.

    
por josephzigler 17.08.2016 / 14:27

1 resposta

0

Eu não tenho nenhuma experiência prática com o upstart, então peço desculpas se a sintaxe upstart estiver errada, mas o script real deve ser sólido. Tudo o que ele faz é dar uma volta, verificando se o serviço teamspeak está em execução (aguardando 5 segundos entre verificações) antes de iniciar o serviço tsbot.

script
while true; do    
    if [[ $(pgrep teamspeak) ]]; then
        systemctl start tsbot.service
        break
    fi
    sleep 5
done
end script
    
por 17.08.2016 / 17:46

Tags