【发布时间】:2011-04-11 08:35:27
【问题描述】:
我有 this Perl script 用于监视 Linux 中的文件夹。
为了不断检查目录的任何更新,我有一个 while 循环,在连续循环之间休眠 5 分钟:
while(1) {
...
sleep 300;
}
my other question 上没有人建议使用 cron
进行调度而不是 for 循环。
与使用 crontab 提交 cronjob 相比,这个 while
构造在我看来很难看:
0 */5 * * * ./myscript > /dev/null 2>&1
- cron 是正确的选择吗?使用 while 循环结构有什么好处吗?
- 除了循环和 cron 之外,还有其他更好的方法吗?
另外,我使用的是 2.6.9 内核版本。
【问题讨论】:
-
如果循环在 301, 302, 303, ... 秒而不是 300 秒时略微漂移,会出现什么问题?由于在“构建”到达和被发现之间已经存在不确定(但有界 - 到 300 秒)的延迟,所以再过一两秒会产生任何实际影响吗?
-
@Jonathan:不,这没有任何区别。 300 秒只是为了避免过于频繁地检查并避免为单个更新发送 10 封邮件(如果循环正在运行并且添加了 10 个文件,它可能会准确检查每个添加的时间并分别为每个更新发送邮件,这不是我想要的)。