
Я работаю над проектом, который является моно 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.
решение1
Добавьте 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)