Systemd envia sinal de saída para serviço na inicialização

3

Este é o meu serviço systemd no Ubuntu 16.04:

[Unit]
Description=Starts Caspar CG

[Service]
Type=forking
WorkingDirectory=/home/broadcastingza/CasparCG/Server
Environment=DISPLAY=:0
ExecStart=/bin/sh ./run.sh --watch
StandardOutput=null
Restart=on-failure

[Install]
WantedBy=multi-user.target graphical.target

EDIT: Esta é a saída do sudo systemctl status -l

sudo systemctl status start-caspar.service -l
● start-caspar.service - Starts Caspar CG
       Loaded: loaded (/etc/systemd/system/start-caspar.service; enabled; vendor preset: enabled)
       Active: inactive (dead) since Tue 2017-03-21 17:04:28 SAST; 1 day 16h ago
Process: 5198 ExecStart=/bin/bash -c ./run.sh --watch (code=exited, status=0/SUCCESS)

Mar 21 17:04:14 ZAPS001 systemd[1]: Starting Starts Caspar CG...
Mar 21 17:04:28 ZAPS001 systemd[1]: Started Starts Caspar CG.

Este serviço é ativado e funciona bem. Nenhum problema com o início manualmente também. O único problema que estou tendo é que assim que o script de shell é executado ("run.sh"), o servidor é iniciado, em seguida, recebe um sinal de saída e sai com o código de saída 0. É quase como se o servidor requer o console para ser aberto o tempo todo.

Quando executo exatamente o mesmo script do console, ele funciona perfeitamente bem.

Existe uma maneira de iniciar o serviço sem sair do console imediatamente, ou existe uma maneira de iniciar o serviço independente do console?

    
por string theorist 23.03.2017 / 08:38

1 resposta

2

Minhas desculpas a todos. Este parece ser um problema conhecido no binário que estou tentando executar sem cabeça (casparcg). Veja: link

A solução sugerida é instalar a tela (ou tmux) para executar o terminal no modo desanexado. Eu trabalhei usando a tela.

  1. Tela de instalação:

    sudo apt install screen

  2. Esta é a linha de código a ser usada no serviço systemd após a instalação:

    screen -d -m /path/to/your/script.sh

-d desanexa o terminal, -m ignora $ STY.

  1. Ajuste o serviço systemd de acordo:

    [Unit] e Description=Starts Caspar CG

    [Service]
    Type=forking
    Environment=DISPLAY=:0 e StandardOutput=null
    ExecStart=/bin/sh -c "screen -d -m /usr/bin/start_caspar.sh" --watch e Restart=on-failure e User=broadcastingza

    [Install] e WantedBy=multi-user.target graphical.target

Agora sou capaz de executar o servidor desanexado.

Obrigado pela ajuda!

    
por 24.03.2017 / 13:34