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

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 не запустится.

Boardy
источник
Вы должны взглянуть на некоторые примеры, например: en.gentoo-wiki.com/wiki/Systemd или wiki.archlinux.org/index.php/Systemd/Services
Ульрих

Ответы:

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