Come posso avviare un servizio systemd solo dopo l'avvio di mysql?


14

Sto lavorando a un progetto che è un EmailServer mono. Ho provato ad aggiungere un servizio al systemd in modo che si avvii automaticamente durante l'avvio ma sto riscontrando un problema.

Ho creato lo script e aggiunto /lib/systemd/system/emailserver.servicee quindi eseguito ln -s /lib/systemd/system/emailserver.service /etc/systemd/system/emailserver.service.

Ho quindi eseguito systemd reload-daemonseguito da systemctl start emailserver.servicee poi quando corro ps -ef |grep -i emailserverposso vedere che mono EmailServer.exeè in esecuzione, tutto sembra buono finora.

Tuttavia, quando riavvio il server nel /var/log/messagesfile, contiene quindi il seguente messaggio di errore

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.

Nel mio script emailserver.service ho il seguente

[Unit]
Description=Boardies Email Server Startup Script

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

[Install]
WantedBy=multi-user.target

Sto usando OpenSuse 12.1

Cosa sto sbagliando, grazie per l'aiuto che puoi fornire.

AGGIORNAMENTO Ho scoperto cosa sta causando l'interruzione del funzionamento del programma all'avvio, ma non sono sicuro di come risolvere questo problema. Il mio programma si basa su un database MySQL e penso che il mio programma si stia avviando prima dell'avvio di MySQL, come posso fare per non caricare il mio servizio fino a dopo l'avvio di MySQL.


Dovresti dare un'occhiata ad alcuni esempi, ad esempio: en.gentoo-wiki.com/wiki/Systemd o wiki.archlinux.org/index.php/Systemd/Services
Ulrich Dangel

Risposte:


29

Aggiungi After=mysql.serviceal tuo file di servizio (o modificalo con il nome di servizio corretto), ad esempio:

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

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

[Install]
WantedBy=multi-user.target

Nota che non devi mettere il tuo file di servizio in / lib / systemd / system, è un file fornito dall'utente e dovresti solo copiarlo in / etc / systemd / system.

Per ottenere un elenco di tutti i file di servizio è possibile utilizzare systemctl list-unit-filese determinare il nome corretto per il servizio di database (probabilmente è mysql.service o mysqld.service)


possiamo avere più After=*.servicee ordinati?
Ciasto piekarz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.