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.
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:
Placez votre script à un autre emplacement et accédez-y à partir de vos fichiers de service systemd
.
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