у меня есть backup.service вызывается каждый час backup.timer. К сожалению, сценарий резервного копирования, запущенный внутри контейнера, может завершить успешно, но с предупреждениями возвращает ненулевой код выхода. Итак, хотя все могло работать, контейнер останавливается с ненулевым кодом выхода. Итак, единица входит не смогли состояние во флоте.
И в этом случае кажется, что таймер больше не запустит это устройство, хотя я не нашел ничего в документации systemd, говорящего об этом.
Чтобы прояснить: для меня это нормально, когда контейнер останавливается с ненулевым кодом выхода. Но тогда мой таймер не работает.
Теперь я мог преобразовать этот сценарий в другой, который затем называется точкой входа als docker. Но я должен убедиться, что вывод auf STDOUT и STDERR каким-то образом сохраняется.
Я также мог бежать sudo systemctl сбросить сбой после того, как устройство вышло из строя, но мне это кажется немного взломанным ... (я попробовал это, и в этом случае таймер снова запустил устройство. Но он не работает как ExecStopPost-Task в служебном файле)
Есть ли лучший способ убедиться, что единица
Вы можете префикс своей команды с помощью -
, то systemd игнорирует сбой и не переводит устройство в состояние сбоя. Итак, вместо
ExecStart=/path/to/your/command
Пытаться
ExecStart=-/path/to/your/command
Видеть systemd страницу руководства для получения дополнительной информации.
Если вы хотите игнорировать некоторые возвращаемые значения, но все же хочется другие чтобы засчитать systemd как ошибки, вы можете указать их в [Service]
раздел вашего файла .service в виде списка, разделенного пробелами, чтобы SuccessExitStatus
, RestartPreventExitStatus
, и RestartForceExitStatus
. Они также принимают имена сигналов.
Ссылка: человек 5 systemd.service