Як запустити системну службу лише після запуску 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.


Ви повинні ознайомитись з деякими прикладами, наприклад: en.gentoo-wiki.com/wiki/Systemd або wiki.archlinux.org/index.php/Systemd/Services
Ulrich Dangel

Відповіді:


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.