如何在固定间隔后运行程序代码?

Laz*_*zer 1 unix perl cron

我有这个Perl脚本用于监视Linux中的文件夹.

为了不断检查目录的任何更新,我有一个在连续循环之间休眠5分钟的while循环:

while(1) {

    ...
    sleep 300;
}
Run Code Online (Sandbox Code Playgroud)

我的其他问题上没有人建议使用cron调度而不是for循环.

while与使用crontab提交cronjob相比,这个没有任何中断的构造看起来很难看:

0 */5 * * * ./myscript > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
  • cron是正确的选择吗?使用while循环结构有什么好处吗?
  • 除了循环和cron之外,还有更好的方法吗?

另外,我正在使用2.6.9内核版本.

pax*_*blo 5

我使用该while解决方案的唯一原因是,如果我需要我的代码每分钟运行一次以上,或者需要立即响应外部事件,这两种情况都不是这样的.

我的想法通常是这样的:cron经过几十年的数百万人的测试,所以它至少和我刚刚汇总的代码一样可靠.

即使在我使用的情况下while,我仍然有一个cron工作,以便在发生故障时重新启动我的脚本.

我的建议是简单地使用cron.这就是它的设计目标.而且,顺便说一下,我很少将输出重定向到/dev/null,这使得调试太难了.通常我只是重定向到/tmp文件系统中的文件,以便我可以看到正在发生的事情.

只要您有自动清理程序,您就可以附加,如果您担心任何人在输出中看到任何内容,您甚至可以写入更私密的位置.

但最重要的是,如果丢掉输出,就无法分析罕见的故障.如果你认为你的工作没有错误,那么,无论如何,抛弃输出,但我很少考虑我的脚本没有错误,以防万一.