J'ai activé SystemD de charger monit au démarrage
Sudo systemctl enable monit
Sudo systemctl restart monit
ps aux | grep monit
root 6843 0.0 0.2 112492 2948 ? Sl 18:19 0:00 /usr/bin/monit -c /etc/monit/monitrc
lookpla+ 6857 0.0 0.0 14212 1008 pts/0 S+ 18:21 0:00 grep --color=auto monit
Mais quand je tue monit, ça ne recommence pas:
Sudo kill 6843
ps aux | grep monit
lookpla+ 6862 0.0 0.1 14212 1028 pts/0 S+ 18:23 0:00 grep --color=auto monit
SystemCtL montre que Monit est actif mais il est sorti
Sudo systemctl status monit.service
[.____] ● Monit.service - LSB: Démon de surveillance des services et de ressources [.____] Chargé: chargé (/etc/init.d/monit; généré; Vendeur prédéfinie: activé) Drop : /etc/systemd/system/monit.service.d └─Override.conf [.____] actif: actif (excepté) depuis le mer mer 2017-09-06 18:19:17 UTC; Il y a 29 ans Documents: Man: SystemD-Sysv-Generator (8) Processus: 6830 EXECSTOP =/etc/init.d/Monit Stop (Code = Exited, Status = 0/Succès) Processus: 6835 Execstart =/etc/init.d/Monit Démarrer (Code = Exited, Status = 0/Succès) [ [.____] SEP 06 18:19:17 Localhost SystemD [1]: Stopped LSB: Démon de surveillance des services et de ressources. [.____ Démarrage de LSB: Démon de surveillance des services et de ressources ... 06 18:19:17 Localhost Monit [6835]: * Jeu de démarrage Monit Monit Sep 06 18:19:17 Localhost Monit [6835 ]: ... terminé. Sep 06 18:19:17 Localhost SystemD [1]: Monit.Service: PID Fichier /Run/monit.pid Non lisible (encore?) Après le départ: Aucun fichier ou Annuaire Sep 06 18:19:17 Localhost SystemD [1]: Début LSB: Démon de surveillance des services et des ressources. [.____]
Pourriez-vous m'aider à configurer SystemD afin qu'il redémarre monit après avoir été tué?
J'utilise Ubuntu 17.04
Je crois que l'ajout de l'option Restart
à votre fichier de service systemd
garantirait qu'il est de commencer lorsqu'il n'est pas arrêté par le systemctl stop
commande:
Restart=[no | on-success | on-failure | on-abnormal | on-watchdog | on-abort | always ]
Info:
Non: La valeur par défaut, le service ne sera pas redémarré
On-réussite: ne sera redémarré que lorsque le processus de service sort proprement
On-défaillance: sera redémarré lorsque le processus se ferme avec un code de sortie non nul
On-Abort: ne sera redémarré que si le processus de service est sorti en raison d'un signal non capitalisé non spécifié comme état de sortie propre
On-WatchDog: ne sera redémarré que si le délai de surveillance du service expire
Toujours: sera redémarré, que ce soit à la fois proprement ou non, s'est terminé anormalement par un signal, ou frappe un délai d'attente
Redémarrage = Configure si le service doit être redémarré lorsque le processus de service se déroule, est tué ou un délai d'attente est atteint. Le processus de service peut être le processus de service principal, mais peut également être l'un des processus spécifiés avec EXECTARTPRE =, EXECTARTPOST =, EXECTOP =, EXECSTOPPOST = ou EXECRRELOAD =. Lorsque la mort du processus est le résultat de l'opération SystemD (E.G. STOCK STOP ou REDOMT), le service ne sera pas redémarré. Les délais d'attente incluent la date limite de WatchDog "Keep-Alive Ping" et un service de départ, recharger et arrêter les délais d'utilisation.
Prend l'un de NO, SUCCÈS SUCCÈS, ÉCHEC, ON-ANDNORMAL, SUR LE WATCHDOG, ON-ABORT, OU TOUJOUR. Si défini sur Non (par défaut), le service ne sera pas redémarré. Si défini sur le succès de la réussite, il sera redémarré uniquement lorsque le processus de service sort proprement. Dans ce contexte, une sortie propre signifie un code de sortie de 0, ou l'un des signaux SIGTUP, SIGINT, SIGTERM, SIGPIPE, ainsi que des statuts de sortie et des signaux spécifiés dans SILITSExITStatus =. Si défini sur la défaillance, le service sera redémarré lorsque le processus se déroule avec un code de sortie non nul, est terminé par un signal (y compris sur le point de vidage de noyau, mais à l'exclusion des quatre signaux susmentionnés), lorsqu'une opération (telle que le service Recharger) Times Out, et lorsque le délai d'attente de surveillance configuré est déclenché. Si défini sur On-anormal, le service sera redémarré lorsque le processus est terminé par un signal (y compris sur le point de vidage de noyau, à l'exclusion des quatre signaux susmentionnés), lors de la sortie de fonctionnement ou lorsque le délai d'attente de surveillance est déclenché. Si défini sur On-Abort, le service sera redémarré uniquement si le processus de service est sorti en raison d'un signal non capitalisé non spécifié en tant que statut de sortie propre. Si défini sur WatchDog, le service sera redémarré uniquement si le délai d'attente de surveillance pour le service expire. Si vous êtes prêt à toujours, le service sera redémarré, que cela soit procuré ou non, s'est terminé de manière proprement ou non, par un signal ou frappe un délai d'attente.
La source:
https://www.freedesktop.org/software/systemd/man/systemd.service.html
RemainAfterExit
Option de configuration est l'astuce
Après des heures d'expérimentation avec la configuration SystemD, j'ai découvert la solution qui fonctionne:
Sudo systemctl edit monit
Ensuite, remplissez la configuration suivante:
[Service]
PIDFile=/var/run/monit.pid
Restart=always
RemainAfterExit=no
Et recharger le démon:
Sudo systemctl daemon-reload
Sudo systemctl restart monit
Maintenant SystemD redémarre mon service Monit quand je le tue:
ps aux | grep monit
root 7822 0.0 0.2 112476 2872 ? Sl 19:09 0:00 /usr/bin/monit -c /etc/monit/monitrc
lookpla+ 7855 0.0 0.0 14212 1008 pts/0 S+ 19:12 0:00 grep --color=auto monit
Sudo kill 7822
root 7872 0.0 0.2 112476 2964 ? Sl 19:13 0:00 /usr/bin/monit -c /etc/monit/monitrc
lookpla+ 7875 0.0 0.0 14212 984 pts/0 S+ 19:13 0:00 grep --color=auto monit