Comment puis-je démarrer un service systemd uniquement après le démarrage de mysql?

15

Je travaille sur un projet qui est un EmailServer mono. J'ai essayé d'ajouter un service au systemd pour qu'il démarre automatiquement au démarrage mais j'ai un problème.

J'ai créé le script et ajouté /lib/systemd/system/emailserver.servicepuis exécuté ln -s /lib/systemd/system/emailserver.service /etc/systemd/system/emailserver.service.

Je l' ai ensuite exécuté systemd reload-daemonsuivi systemctl start emailserver.serviceet puis quand je cours , ps -ef |grep -i emailserverje peux alors voir que mono EmailServer.exeest en cours d' exécution, tout beau jusqu'à présent.

Cependant, lorsque je redémarre le serveur dans le /var/log/messagesfichier, il contient alors le message d'erreur suivant

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.

Dans mon script emailserver.service, j'ai les éléments suivants

[Unit]
Description=Boardies Email Server Startup Script

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

[Install]
WantedBy=multi-user.target

J'utilise OpenSuse 12.1

Que fais-je de mal, merci pour toute aide que vous pouvez apporter.

MISE À JOUR J'ai découvert ce qui fait que le programme cesse de fonctionner au démarrage, mais je ne sais pas comment résoudre ce problème. Mon programme repose sur une base de données MySQL et je pense que mon programme démarre avant le démarrage de MySQL, comment puis-je faire en sorte que mon service ne se charge qu'après le démarrage de MySQL.

Boardy
la source
Vous devriez jeter un oeil à quelques exemples, par exemple: en.gentoo-wiki.com/wiki/Systemd ou wiki.archlinux.org/index.php/Systemd/Services
Ulrich Dangel

Réponses:

30

Ajoutez After=mysql.serviceà votre fichier de service (ou remplacez-le par le nom de service correct), par exemple:

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

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

[Install]
WantedBy=multi-user.target

Veuillez noter que vous n'avez pas besoin de placer votre fichier de service dans / lib / systemd / system, il s'agit d'un fichier fourni par l'utilisateur et vous ne devez le copier que dans / etc / systemd / system.

Pour obtenir une liste de tous les fichiers de service, vous pouvez utiliser systemctl list-unit-fileset déterminer le nom correct pour votre service de base de données (il s'agit probablement de mysql.service ou mysqld.service)

Ulrich Dangel
la source
pouvons-nous en avoir plusieurs After=*.serviceet commandés?
Ciasto piekarz