我正在开发一个单声道电子邮件服务器项目。我曾尝试向 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.
Run Code Online (Sandbox Code Playgroud)
在我的 emailserver.service 脚本中,我有以下内容
[Unit]
Description=Boardies Email Server Startup Script
[Service]
ExecStart=/home/bits/EmailServer/start.email
Restart=always
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
我正在使用 OpenSuse 12.1
我做错了什么,感谢您提供的任何帮助。
更新 我已经发现是什么导致程序在启动时停止工作,但我不确定如何解决这个问题。我的程序依赖于 MySQL 数据库,我认为我的程序在 MySQL 启动之前就启动了,如何才能让我的服务在 MySQL 启动之后才加载。
Ulr*_*gel 39
添加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
Run Code Online (Sandbox Code Playgroud)
请注意,您不必将服务文件放入 /lib/systemd/system,它是用户提供的文件,您只需将其复制到 /etc/systemd/system。
要获取可以使用的所有服务文件的列表,systemctl list-unit-files
并确定数据库服务的正确名称(可能是 mysql.service 或 mysqld.service)
归档时间: |
|
查看次数: |
41729 次 |
最近记录: |