¿Cómo puedo iniciar un servicio systemd solo después de que se haya iniciado mysql?

¿Cómo puedo iniciar un servicio systemd solo después de que se haya iniciado mysql?

Estoy trabajando en un proyecto que es un servidor de correo electrónico mono. Intenté agregar un servicio a systemd para que se inicie automáticamente durante el arranque, pero tengo un problema.

Creé el script, lo agregué /lib/systemd/system/emailserver.servicey luego lo ejecuté ln -s /lib/systemd/system/emailserver.service /etc/systemd/system/emailserver.service.

Luego ejecuté systemd reload-daemonseguido de systemctl start emailserver.servicey luego, cuando ejecuto, ps -ef |grep -i emailserverpuedo ver que mono EmailServer.exese está ejecutando, todo se ve bien hasta ahora.

Sin embargo, cuando reinicio el servidor en el /var/log/messagesarchivo, 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 puedan brindarme.

ACTUALIZAR Descubrí qué está causando que el programa deje de funcionar durante el inicio, 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 inicia antes de que se inicie MySQL, ¿cómo puedo hacer que mi servicio no se cargue hasta que MySQL se haya iniciado?

Respuesta1

Agregue After=mysql.servicea su archivo de servicio (o cámbielo al nombre de servicio correcto), por ejemplo:

[Unit]
Description=Boardies Email Server Startup Script
After=mysql.service

[Service]
ExecStart=/home/bits/EmailServer/start.email
Restart=always

[Install]
WantedBy=multi-user.target

Tenga en cuenta que no tiene que colocar 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-filesy determinar el nombre correcto para su servicio de base de datos (probablemente sea mysql.service o mysqld.service)

información relacionada