使用fleet / systemd重置/忽略非零退出代码

Modified on: Sat, 09 Nov 2019 01:40:02 +0800

我每小时都会通过 backup.timer 调用 backup.service 。不幸的是,在容器内运行的备份脚本可以完成成功但有警告返回非零退出代码。因此,尽管一切都可行,但容器会以非零的exitcode停止。
因此,该单位在舰队中进入失败的状态。

在这种情况下,似乎计时器不会再次启动此单元,尽管我没有在systemd文档中找到任何说法。

说清楚:
对我来说完全没问题,让容器停止使用非零退出代码。但我的计时器不起作用。

我现在可以将该脚本解释为另一个脚本,然后称为als docker entrypoint。但是我必须确保以某种方式保存输出auf STDOUT和STDERR。

我也可以在设备发生故障后运行 sudo systemctl reset-failed ,但这对我来说似乎有些笨拙......(我试过了,在那种情况下,计时器运行了单元再次。但它不能作为服务文件中的ExecStopPost-Task工作)

有没有更好的方法来确保单位

  • 虽然返回非零或
  • ,但不会进入失败状态
  • 之后重置它的状态,或
  • 告诉计时器运行该单元,但其状态是失败

最佳答案

您可以在命令前添加-,然后systemd忽略失败并且不会将设备置于失败状态。所以,而不是

ExecStart=/path/to/your/command

尝试

ExecStart=-/path/to/your/command

有关更多信息,请参见systemd手册页

作者:,Paul Dixon

相关问答

添加新评论