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.service
puis exécuté ln -s /lib/systemd/system/emailserver.service /etc/systemd/system/emailserver.service
.
Je l' ai ensuite exécuté systemd reload-daemon
suivi systemctl start emailserver.service
et puis quand je cours , ps -ef |grep -i emailserver
je peux alors voir que mono EmailServer.exe
est en cours d' exécution, tout beau jusqu'à présent.
Cependant, lorsque je redémarre le serveur dans le /var/log/messages
fichier, 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.
Réponses:
Ajoutez
After=mysql.service
à votre fichier de service (ou remplacez-le par le nom de service correct), par exemple: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-files
et déterminer le nom correct pour votre service de base de données (il s'agit probablement de mysql.service ou mysqld.service)la source
After=*.service
et commandés?