Я пытаюсь записать сценарий автоматического запуска, который запускается на начальной загрузке и перезапускает, если она отказывает. Запуск на начальной загрузке является выполнимым путем простого добавления сценария к
/etc/rc.local
Файл, однако моей проблемой является автоматический перезапуск. Я думал об экспорте Переменной $$ в файл внешнего текста прежде, чем запустить фактический сценарий и использовать это с другим сценарием, чтобы проверить, работает ли тот pid все еще или нет. Мой вопрос состоит теперь в том, как проверить, работает ли определенный PID все еще и также если существует более надежный способ сделать это.
То, что Ваш сценарий должен выполнить таким способом, systemd
сервис.
Примером был бы тот ниже:
[Unit]
Description=My Script
[Service]
Type=forking
ExecStart=/path/to/script
Restart=on-failure
[Install]
WantedBy=multi-user.target
Это может быть сделано несколькими способами:
Поместите свой сценарий в другое местоположение и получите доступ к нему от Вашего systemd
сервисные файлы.
Поместите код непосредственно в systemd
сервисный файл.
Я полагаю, что первая опция идеальна в Вашей ситуации. Теперь когда-то сделанный включают при начальной загрузке с нормальным systemctl
команды, такие как:
sudo systemctl enable myscript.service
sudo systemctl status myscript.service
sudo systemctl stop myscript.service
sudo systemctl start myscript.service
Источники:
https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files
https://www.freedesktop.org/software/systemd/man/systemd.unit.html