
Я создал пользовательский сервис {start|stop|restart|reload|force-reload|status}
для StoneDb (модифицированная версия MySQL), но при проверке статуса получаю следующую ошибку:
Это явно означает, что команда не принимается StoneDb, даже если я использую тот же скрипт для управления службой вручную.
[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
Что я здесь упускаю?
решение1
Thesystemctl
команды для запуска и остановкисервисный блокне передавайте аргументы командной строки (systemctl), ExecStart=
команда запуска службы выполняется дословно, как определено в модуле службы.
Если скрипт ожидает аргумент, например, опцию stop
или start
, как предполагает ваше сообщение об ошибке, этот аргумент должен быть включен в ExecStart=script some-argument
определение.
Как уже было сказано:
[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
...
Хотя вместо вызова mysql_server
вспомогательного/обертывающего скрипта вы можете рассмотреть возможность использования более родного сервисного модуля systemd, предоставляемого MySQL и StoneDB в качестве шаблона сервисного модуля:
https://github.com/stoneatom/stonedb/tree/stonedb-5.7-dev/scripts/systemd