Comando de entrada no serviço de segundo plano

2

Eu tenho um serviço personalizado em execução em segundo plano para um serviço personalizado de jogos gmod. Eu escrevi meu próprio arquivo gmod.service então agora eu posso iniciá-lo com serviço gmod start . Você pode ver abaixo. É possível inserir um comando nesse serviço a partir de um terminal ou de um script bash para que eu possa alterar o mapa, por exemplo? Agradecemos antecipadamente

[Unit] 
Description=Gmod server 
After=network.target 
[Service] 
Type=simple 
ExecStart=/bin/bash /home/server/Documents/Servers/Gmod/run_gmod.sh 
[Install] 
WantedBy=multi-user.target
    
por Kevin Snijder 14.05.2018 / 22:09

1 resposta

3

Use arquivos de modelo da unidade systemd

Este é um bom exemplo para quando os modelos de unidades do systemd podem ser usados. É possível ter um serviço systemd para ser chamado com um argumento e usar esse argumento na definição de serviço para e. g. Entregue-o ao programa que é executado. Aqui está um exemplo para o seu caso:

Instale sua unidade como

/etc/systemd/system/[email protected]

Altere o arquivo para ficar assim:

[Unit] 
Description=Gmod server (map: %I)
After=network.target 
[Service] 
Type=simple 
ExecStart=/bin/bash /home/server/Documents/Servers/Gmod/run_gmod.sh %i
[Install] 
WantedBy=multi-user.target
DefaultInstance=myDefaultMap

(Você pode precisar executar systemctl daemon-reload neste ponto para fazer o systemd ler o arquivo alterado). Depois disso, você poderá iniciar o gmod com um argumento como este:

systemctl start [email protected]

O Systemd usará o arquivo de gabarito e substituirá I% pelo argumento e %i pelo argumento citado pelo shell. Depois, iniciará como uma instância de serviço denominada [email protected] . Você pode verificar isso executando

systemctl status gmod@myMapName

Você também pode iniciar automaticamente uma instância padrão no momento da inicialização, assim:

systemctl enable gmod@

Desta forma, você pode até iniciar várias instâncias do gmod, se o programa permitir isso. Para mais informações sobre o tópico, verifique a página de manual systemd.unit (5) .

    
por Sebastian Stark 27.05.2018 / 13:25