arquivo de serviço para o aplicativo golang

4

Então eu escrevi um aplicativo golang que eu queria inicializado por systemd sempre que meu servidor fosse reinicializado.

Aqui está o arquivo de serviço: -

[Unit]
Description=golang wiki initialization

[Service]
Type=forking
PIDFile=/tmp/gowiki.pid-3030
User=root
Group=root
WorkingDirectory=/var/www
ExecStart=/bin/bash -c 'daemonize -o stdout.log -e stderr.log /var/www/wiki'

[Install]
WantedBy=multi-user.target

Parece funcionar bem sempre que reinicializo o servidor, mas ainda estou com problemas ligeiramente irritantes quando estou iniciando ou reiniciando manualmente gowiki como este no terminal: -

systemctl start gowiki

ou

systemctl restart gowiki

Isso faz com que meu processo gowiki seja executado; no entanto, depois de executar meu comando systemctl start gowiki , estou congelado em meu terminal e o comando parece não sair até forçar manualmente um Ctrl-C.

O que estou fazendo errado ao causar esse problema?

    
por Calvin Cheng 16.02.2013 / 10:32

1 resposta

7

Isso funcionou.

[Unit]
Description=golang wiki initialization

[Service]
PIDFile=/tmp/gowiki.pid-4040
User=root
Group=root
WorkingDirectory=/var/www
ExecStart=/bin/bash -c '/var/www/wiki'

[Install]
WantedBy=multi-user.target

Como os serviços Type=forking esperam que o serviço pai saia antes que o serviço seja realmente iniciado. Se o pai nunca sair, o systemctl start não retornará um prompt porque ele não acha que está sendo executado.

    
por 16.02.2013 / 10:52

Tags