
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.service
y luego lo ejecuté ln -s /lib/systemd/system/emailserver.service /etc/systemd/system/emailserver.service
.
Luego ejecuté systemd reload-daemon
seguido de systemctl start emailserver.service
y luego, cuando ejecuto, ps -ef |grep -i emailserver
puedo ver que mono EmailServer.exe
se 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 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.service
a 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-files
y determinar el nombre correcto para su servicio de base de datos (probablemente sea mysql.service o mysqld.service)