Я работаю над проектом, который является моно 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 не запустится.
Ответы:
Добавьте
After=mysql.service
в файл службы (или измените его на правильное имя службы), например:Обратите внимание, что вам не нужно помещать файл службы в / lib / systemd / system, это файл, предоставленный пользователем, и вам нужно только скопировать его в / etc / systemd / system.
Чтобы получить список всех служебных файлов, которые вы можете использовать,
systemctl list-unit-files
и определите правильное имя для службы базы данных (возможно, это mysql.service или mysqld.service).источник
After=*.service
и заказать?