Cron和Crontab的区别是什么?

59

我无法理解这个问题的答案:“croncrontab之间有什么区别。”它们都是调度程序吗?一个只执行一次文件,另一个按定期间隔执行文件?还是cron安排一个作业,而crontab将它们存储在一个表或文件中以进行执行?

Cron维基页面提到:

Cron由一个 crontab(cron表)文件驱动,该文件是指定定期在给定计划上运行的 shell 命令的配置文件。

crontabwiki.dreamhost中提到:

crontab命令在Unix和类Unix操作系统中使用,用于定期执行命令。它从标准输入读取一系列命令,并将它们收集到一个名为“crontab”的文件中,稍后会读取该文件并执行其中的指令。

具体而言,当我安排一个要重复执行的工作时:(引用自维基百科

1 0 * * *  printf > /var/log/apache/error_log

或仅执行一次作业

at -f myScripts/call_show_fn.sh 1:55 2014-10-14

我在这两个命令中都使用了cron功能,这些命令被推送到 crontab 中吗?还是第一个命令是 crontab,第二个命令是 cron 函数?

1个回答

71

cron是运行定时任务的服务的通称。crond是在后台运行并读取crontab文件的守护进程的名称。一个crontab文件包含以特定格式列出的任务。

cron是指运行定时任务的服务的总称,crond则是运行在后台的守护进程,用于读取crontab文件。而crontab文件则是按照特定格式列出任务的文件。

minute hour day-of-month month day-of-week  command

crontabs通常由系统存储在/var/spool/<username>/crontab中。这些文件不应直接进行编辑。您可以使用crontab命令来调用文本编辑器(所定义的EDITOR环境变量)来修改crontab文件。

cron有各种实现方式。通常会有每个用户的crontab文件(使用命令crontab -e访问),以及位于/etc/cron.daily/etc/cron.hourly等的系统crontab。

在第一个示例中,您正在通过crontab安排作业。在第二个示例中,您正在使用at命令将作业排队以便稍后执行。


那么,在我的示例命令中,这两个都是存储在“crontab”文件中的“cron”? - NoobEditor
你的第一个例子将会放在 crontab 文件中。你可以通过 crontab -e 命令添加它。第二个例子使用 at 命令,不会出现在 crontab 中。 - Ben Whaley
所以第二个例子既不是cron也不是crontab,因为它使用了at吗? - NoobEditor
7
没错,你可以在没有 cron 守护程序运行的情况下使用 at 命令。at 通常用于一次性任务,而 cron 则用于定期任务。 - Ben Whaley
7
非常出色的剖析。我见过的最简明清晰的描述。 - J.M. Janzen
在使用 crontab -e 进行编辑后,我的用户 crontab 文件位于 /var/spool/cron/crontabs/<username>。这在过去几年中可能已经发生了变化。此外,我的 crontab 中有一个默认的编辑器选择器(nano vs vim vs etc)。该设置位于 /home/<username>/.selected_editor(或 ~/.selected_editor),可以通过 select-editor 命令进行更改。 - abelito

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接