仅在mysql启动后,如何才能启动systemd服务?


15

我正在研究一个单声道EmailServer项目。我尝试将服务添加到systemd,以便它在引导过程中自动启动,但是我遇到了问题。

我已经创建了脚本并添加到该脚本/lib/systemd/system/emailserver.service,然后运行它ln -s /lib/systemd/system/emailserver.service /etc/systemd/system/emailserver.service

我已经然后执行systemd reload-daemon之后systemctl start emailserver.service,然后当我运行的ps -ef |grep -i emailserver话,我可以看到mono EmailServer.exe正在运行,都在寻找好为止。

但是,当我重新启动/var/log/messages文件中的服务器时,它随后包含以下错误消息

Jul 16 19:41:02 dev-server systemd[1]: emailserver.service holdoff
time over, scheduling restart. Jul 16 19:41:02 dev-server systemd[1]:
emailserver.service holdoff time over, scheduling restart. Jul 16
19:41:03 dev-server systemd[1]: emailserver.service holdoff time over,
scheduling restart. Jul 16 19:41:03 dev-server systemd[1]:
emailserver.service holdoff time over, scheduling restart. Jul 16
19:41:03 dev-server systemd[1]: emailserver.service holdoff time over,
scheduling restart. Jul 16 19:41:04 dev-server systemd[1]:
emailserver.service holdoff time over, scheduling restart. Jul 16
19:41:04 dev-server systemd[1]: emailserver.service start request
repeated too quickly, refusing to start.

在我的emailserver.service脚本中,我有以下内容

[Unit]
Description=Boardies Email Server Startup Script

[Service]
ExecStart=/home/bits/EmailServer/start.email
Restart=always

[Install]
WantedBy=multi-user.target

我正在使用OpenSuse 12.1

我做错了,感谢您提供的任何帮助。

更新 我已经找到了导致程序在启动时停止工作的原因,但是我不确定如何解决此问题。我的程序依赖于MySQL数据库,我认为我的程序是在MySQL启动之前启动的,如何使我的服务在MySQL启动之后才能加载。


Answers:


30

添加After=mysql.service到您的服务文件(或将其更改为正确的服务名称),例如:

[Unit]
Description=Boardies Email Server Startup Script
After=mysql.service

[Service]
ExecStart=/home/bits/EmailServer/start.email
Restart=always

[Install]
WantedBy=multi-user.target

请注意,您不必将服务文件放入/ lib / systemd / system中,它是用户提供的文件,您只应将其复制到/ etc / systemd / system中。

要获取所有服务文件的列表,可以使用systemctl list-unit-files并确定数据库服务的正确名称(它可能是mysql.service或mysqld.service)


我们可以有多个After=*.service订单吗?
Ciasto piekarz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.