cron 作业本身是否对现代系统构成了重大负担?

cron 作业本身是否对现代系统构成了重大负担?

我想运行一个非常简单的脚本(在 dir y 中是否有一个名为 x 的目录,如果是的话,将其移动到 dir z – 并且 x 大约每天只会出现一次)每隔 15 秒左右(一分钟分为4*15 秒)。运行这样的 cron 作业(它们运行的​​脚本不是资源密集型的)是否会对性能、稳定性或其他方面产生不可忽视的负面影响?

答案1

要回答标题中的问题,不,大多数系统不会因运行 cron 作业而承受太多负担。现代 Unix 系统上发生的许多自动化任务都是由 cron 作业启动的。

诸如旋转日志和重新生成人类使用的索引文件之类的事情都是通过 cron 作业启动的。

如果您好奇,请查看 下的任何目录/etc/cron*。那里肯定有一些示例可以阐明这些事情是如何在您的系统上完成的。

答案2

首先,cron 的最小分辨率是 1 分钟。所以每 15 秒不会发生一次。如果您确实需要每 15 秒一次,那么您需要重新考虑您的策略。

接下来,cron 仅在特定时间运行任务。如果任务是资源密集型的,那么它也会在 cron 中。如果不是,那就不会了。 cron(几乎)不会增加任何开销,因为它传递要运行的命令的方式。

最后每 1 分钟通过 cron 运行一个任务是相当愚蠢的。 Anacron(从计算机关闭或睡眠时运行回日志 cron 任务)将在它认为需要时按顺序运行所有任务。

在文件应该显示的时间左右每 1 分钟运行一次该任务将会为您提供更好的服务。甚至每 10 分钟一次。

无需仅仅为了捕获您知道每天只会出现一次的文件而运行该任务 1,440 次。

如果您的任务非常重要,以至于它会立即看到该文件,那么请使用其他文件。否则,我建议放慢任务频率,以更适合您的需求。

话虽这么说,如果你真的想为此使用 cron,那么它不会增加任何额外的开销,而只是通过命令行运行它,但是你的电子邮箱会满的。

答案3

在这种情况下使用的正确工具称为inotify。它是 Linux 内核的一部分,其目的是通知程序文件系统的更改。它可以通过多种不同的方式进行配置,并且几乎肯定适合您想要做的事情。

答案4

经常生成的进程始终存在系统资源匮乏的风险,但也可以采取预防措施(例如限制)。

PS 如果您真的很注重这项任务的效率,您可以使用inotify相反。

相关内容