
Eu criei um serviço personalizado {start|stop|restart|reload|force-reload|status}
para StoneDb (uma versão modificada do MySQL), mas ao verificar o status recebo este erro:
O que significa claramente que o comando não é executado pelo StoneDb, mesmo que eu esteja usando o mesmo script para gerenciar o serviço manualmente.
[Unit]
Description=StoneDB database server
After=network.target
#StartLimitIntervalSec=90
[Service]
Type=forking
ExecStart=/opt/stonedb57/install/mysql_server
TimeoutSec=300
[Install]
WantedBy=multi-user.target
O que estou perdendo aqui?
Responder1
Osystemctl
comandos para iniciar e parar umunidade de serviçonão passe seus argumentos de linha de comando (systemctl), o ExecStart=
comando para iniciar o serviço será executado literalmente conforme definido na unidade de serviço.
Se esses scripts esperam um argumento, uma opção como stop
ou start
, como sugere sua mensagem de erro, esse argumento deve ser incluído na ExecStart=script some-argument
definição.
Como já comentado:
[Service]
Type=forking
ExecStart=/opt/stonedb57/install/mysql_server start
ExecStop=/opt/stonedb57/install/mysql_server stop
ExecReload=/opt/stonedb57/install/mysql_server reload
TimeoutSec=300
...
Embora em vez de chamar o mysql_server
script auxiliar/wrapper: você pode considerar usar a unidade de serviço systemd mais nativa fornecida pelo MySQL e StoneDB como modelo de unidade de serviço:
https://github.com/stoneatom/stonedb/tree/stonedb-5.7-dev/scripts/systemd