
He creado un servicio personalizado {start|stop|restart|reload|force-reload|status}
para StoneDb (una versión modificada de MySQL), pero al verificar el estado aparece este error:
Lo que significa claramente que StoneDb no toma el comando, incluso si estoy usando el mismo script para administrar el servicio 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
¿Qué me falta aquí?
Respuesta1
Elsystemctl
comandos para iniciar y detener ununidad de servicioNo pase los argumentos de la línea de comando (systemctl), el ExecStart=
comando para iniciar el servicio se ejecuta palabra por palabra como se define en la unidad de servicio.
Si ese script espera un argumento, una opción como stop
o start
, como sugiere su mensaje de error, ese argumento debe incluirse en la ExecStart=script some-argument
definición.
Como ya se comentó:
[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
...
Aunque en lugar de llamar al mysql_server
script auxiliar/contenedor: podría considerar usar la unidad de servicio systemd más nativa proporcionada por MySQL y StoneDB como plantilla de unidad de servicio:
https://github.com/stoneatom/stonedb/tree/stonedb-5.7-dev/scripts/systemd