Как запустить службу systemd только после запуска mysql?

Как запустить службу systemd только после запуска mysql?

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

Связанный контент