我已经为 StoneDb(MySQL 修改版本)创建了一个自定义服务{start|stop|restart|reload|force-reload|status}
,但是在检查状态时出现此错误:
这显然意味着即使我使用相同的脚本手动管理服务,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
这systemctl
启动和停止命令服务单位不要传递你的(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
帮助程序/包装程序脚本:您可以考虑使用 MySQL 和 StoneDB 提供的更原生的 systemd 服务单元作为服务单元模板:
https://github.com/stoneatom/stonedb/tree/stonedb-5.7-dev/scripts/systemd