I'm trying to write a systemd service which should expose the options
start|stop|status|restart
.
Seu primeiro erro. Unidades de serviço não são scripts. Eles não têm opções . As opções são para o comando systemctl
e são uniformes em todas as unidades.
I realize using centos seems to be non-standard,
Seu segundo erro, relacionado ao seu terceiro erro:
O CentOS não é o estranho. A versão 15 do Ubuntu, o Debian 8 e o CentOS 7 usam systemd e todos precisam de uma unidade de serviço apropriada.
ExecStart=/etc/init.d/arkdaemon start ExecStop=/etc/init.d/arkdaemon stop
Seu quarto erro. Você não escreve unidades de serviço punindo tudo para um script System 5 rc
. Além do fato de que isso não funcionará no Debian e no Ubuntu, porque eles tentam colocar tudo de volta na unidade de serviço; é um horror de um conceito, digno de uma entrada na casa do horror do sistema. Observando o script System 5 rc
, ele retorna todos os disparates equivocados - usando a saída de ps
, uso equivocado de privilégios sudo
a drop (em vez de adquiri-los) - que mudar para um gerente de serviço adequado se livrar.
Não confunda aleatoriamente. Compreenda como o seu daemon é realmente executado e, em seguida, escreva uma unidade de serviço que descreva isso.
O script do sistema 5 rc
chama um programa chamado arkmanager
com start
e stop
verbos. Assim, à primeira vista, pode-se pensar que uma unidade de serviço systemd também deveria. Mas acontece que arkmanager
si é mais outro Supervisor do Daemon do Pobre homem escrito (mal, como sempre são) em shell script, que faz o mesmo absurdo e muito mais - mostrando a saída de ps
, usando screen
(sic!) como uma maneira de separar um processo e depois enviar um SIGINT
para ele, mantendo seu próprio arquivo de log (não rotacionado) e usando seqüências CSI conectadas (sic!) em um programa que ao gerenciar um daemon não está sendo executado conectado a um terminal em primeiro lugar.
Você está ocupado construindo outro horror. Pare.
Retirando o horrendo edifício cambaleante que tem um Supervisor do Daemon de Poorman supervisionando outro, que por sua vez está abusando de screen
como terceiro supervisor ad hoc, descobre-se que o gerenciamento de serviços subjacente se parece com isto:
[Unit] Description=ARK server Documentation=https://unix.stackexchange.com/questions/212059/ After=network.target [Service] User=steam Environment=SESSION=YourLinuxSessionName Environment=QUERYPORT=27016 Environment=PASS=password Environment=ADMINPASS=adminpassword ExecStart=/home/steam/ARK/ShooterGame/Binaries/Linux/ShooterGameServer TheIsland?SessionName=${SESSION}?QueryPort=${QUERYPORT}?ServerPassword=${PASS}?ServerAdminPassword=${ADMINPASS}?listen LimitNOFILE=100000 Restart=always [Install] WantedBy=multi-user.target
E qual é a primeira regra de migração para o systemd? Está certo. Agora é 2015, e alguém provavelmente já fez isso. E de fato aqui, alguém já tem, me batendo por 4 dias. Eles também não construíram um horror.
Leitura adicional
- Lennart Poettering (2013-10-07).
systemctl
. páginas de manual do systemd. freedesktop.org. - Jonathan de Boyne Pollard (2015). A casa do sistema de terror . Respostas frequentemente dadas.
- link
- link
- "Inicialização Automática" . Configuração do Servidor Dedicado . Wiki Survival Evolved.