Estoy trabajando en un proyecto que es un EmailServer mono. Intenté agregar un servicio al systemd para que se inicie automáticamente durante el arranque, pero tengo un problema.
He creado el script y lo agregué /lib/systemd/system/emailserver.service
y luego lo ejecuté ln -s /lib/systemd/system/emailserver.service /etc/systemd/system/emailserver.service
.
Luego ejecuté systemd reload-daemon
seguido systemctl start emailserver.service
y luego, cuando corro ps -ef |grep -i emailserver
, puedo ver que se mono EmailServer.exe
está ejecutando, todo se ve bien hasta ahora.
Sin embargo, cuando reinicio el servidor en el /var/log/messages
archivo, contiene el siguiente mensaje de error
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.
En mi script emailserver.service tengo lo siguiente
[Unit]
Description=Boardies Email Server Startup Script
[Service]
ExecStart=/home/bits/EmailServer/start.email
Restart=always
[Install]
WantedBy=multi-user.target
Estoy usando OpenSuse 12.1
¿Qué estoy haciendo mal? Gracias por cualquier ayuda que pueda proporcionar.
ACTUALIZACIÓN He descubierto qué está causando que el programa deje de funcionar durante el arranque, pero no estoy seguro de cómo puedo solucionar este problema. Mi programa se basa en una base de datos MySQL y creo que mi programa se está iniciando antes de que MySQL se haya iniciado, ¿cómo puedo hacer que mi servicio no se cargue hasta después de que MySQL se haya iniciado?
Respuestas:
Agregue
After=mysql.service
a su archivo de servicio (o cámbielo al nombre de servicio correcto), por ejemplo:Tenga en cuenta que no tiene que poner su archivo de servicio en / lib / systemd / system, es un archivo proporcionado por el usuario y solo debe copiarlo en / etc / systemd / system.
Para obtener una lista de todos los archivos de servicio que puede usar
systemctl list-unit-files
y determinar el nombre correcto para su servicio de base de datos (probablemente sea mysql.service o mysqld.service)fuente
After=*.service
y ordenados?