Назад | Перейти на главную страницу

Сбросить / игнорировать ненулевой код выхода с помощью fleet / systemd

у меня есть 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