0

我有一个在 ELINOS4 环境中的嵌入式设备中执行的 cron 实例。这个设备有问题,我认为与电池有关,它改变了系统日期。

对于嵌入式应用程序来说不是问题,因为应用程序会重新同步日期。但是对于 cron 守护进程会影响其调度程序,从而导致在很远的将来对下一次执行进行编程。使用标志执行 cron 我得到以下日志:

[3933] TargetTime=1359121500, sec-to-wait=60
...
[3933] spool dir mtime unch, no load needed.
[3933] tick(45,13,24,0,5) user [root:0:0:...] cmd="/etc/logrotate /etc/logrotate.conf"
[3933] TargetTime=1359121560, sec-to-wait=1130199663
[3933] sleeping for 1130199663 seconds

我尝试手动更改日期,但 cron 未检测到此更改(它正在休眠https://stackoverflow.com/a/4141239)。

一种快速破解方法是修改 cron 的源代码,但是否存在更好的解决方案?

提前致谢

4

1 回答 1

0

除了明显的“修复你的硬件”之外,直接的建议是让一个守护进程检查时间,如果它看到它向后跳(或向前?)超过几秒钟,重新启动 crond(以及任何其他进程)可以使用这种方法来确定“下次醒来”)。

于 2013-01-25T13:29:47.033 回答