web-dev-qa-db-fra.com

Script qui démarre au démarrage et redémarre automatiquement en cas d'échec

J'essaie d'écrire un script de démarrage automatique qui démarre au démarrage et redémarre s'il se bloque. Le démarrage au démarrage est faisable en ajoutant simplement le script à la

/etc/rc.local

Fichier, mais mon problème est le redémarrage automatique. J'ai pensé à exporter la variable $$ dans un fichier texte externe avant de lancer le script lui-même et à l'utiliser avec un autre script pour vérifier si ce pid est toujours en cours d'exécution ou non. Ma question est maintenant de savoir si un PID spécifique est toujours actif et s'il existe un moyen plus fiable de le faire.

2
ADDB

Ce que votre script doit exécuter de cette manière, c'est systemd sevice.

Un exemple serait celui ci-dessous:

[Unit]
Description=My Script


[Service]
Type=forking    
ExecStart=/path/to/script
Restart=on-failure

[Install]
WantedBy=multi-user.target

Cela peut être fait de plusieurs manières:

  1. Placez votre script à un autre emplacement et accédez-y à partir de vos fichiers de service systemd.

  2. Placez le code directement dans le fichier de service systemd.

Je crois que la première option est idéale dans votre situation. Maintenant, une fois terminé, activez au démarrage avec les commandes normales systemctl, telles que:

Sudo systemctl enable myscript.service
Sudo systemctl status myscript.service
Sudo systemctl stop myscript.service
Sudo systemctl start myscript.service

Sources:

https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files

https://www.freedesktop.org/software/systemd/man/systemd.unit.html

1
George Udosen