У меня есть скрипт bash, сидящий на устройстве Linux в поле. Я хочу, чтобы этот скрипт работал 24/7. Бывают просто плохие случаи, когда мой сценарий ломается по причинам, не зависящим от меня. Итак, в этом случае я хочу, чтобы этот скрипт перезапускался всякий раз, когда он умирает.
Любые идеи или пример кода, чтобы заставить меня работать?
Также есть forever
, который можно установить поверх nodejs
. В котором есть cli для управления/остановки/запуска ваших сценариев навсегда.
@iBug --- Потрясающе!!!. Ваше предложение действительно хорошее, и я чувствую, что могу сделать гораздо больше, чем эта задача, создав свои собственные сервисы systemd.
Вы можете использовать runit, который представляет собой пакет для различных систем Linux (он есть в Ubuntu и Debian).
Ваша цель — это как раз функция сервис-менеджера, а systemd — это тот, который поставляется с Raspbian. Вы можете создать службу systemd для своего скрипта, установить для него режим перезапуска always
(может быть остановлен только вручную) или on-failure
(перезапустить при выходе с ошибкой).
Вы можете создать /etc/systemd/system/my-script.service
со следующим содержанием:
[Unit]
Description=My Script
[Service]
Type=simple
ExecStart=/bin/bash /path/to/script.sh
#WorkingDirectory=somewhere if you need
Restart=on-failure
RestartSec=2
[Install]
WantedBy=multi-user.target
Затем вы запускаете systemctl daemon-reload
и systemctl start my-script
.
Если вам нужны дополнительные настройки, вы можете найти страницу руководства рядом с Restart=
.
Создайте для него службу systemd, затем установите
Restart=always
илиon-failure
в зависимости от вашего варианта использования.