如何在gentoo Linux系统上处理crontab事件?

时间:2014-05-09 14:21:09

标签: linux crontab gentoo

我有一个gentoo Linux系统和crontab的奇怪行为。作为root用户,我理解文档,命令

crontab -l

列出为当前用户root定义的所有crontab作业(没有为任何其他用户定义的cronjobs)。所有列出的cronjobs也在文件/etc/cronjob中定义。

但是,crontab中还有两个/etc/cron.d文件,分别定义了一个cronjob:

/etc/cron.d/testcron1
/etc/cron.d/testcron2

虽然未与crontab -l一起列出,但执行文件/etc/cron.d/testcron1中定义的cronjob。文件/etc/cron.d/testcron2中定义的另一个cronjob未执行。

这一切都没有意义,所以我有两个问题:

  • 为什么crontab -l不列出所有cronjobs?
  • /etc/cron.d中的cronjobs必须在某处注册,还是需要重新启动守护程序/服务?为什么一个开始,而不是另一个(可执行文件工作正常)。

1 个答案:

答案 0 :(得分:1)

命令crontab用于维护/管理单个用户的crontab文件。这些文件通常位于/var/spool/cron/crontabs

如果crontab -l没有显示任何cron作业,则此用户当前没有单独的cron作业。这并不意味着/ etc / cron * taht中没有cron作业将以该用户的权限运行。 crontab不会对/ etc / cron *中的文件进行操作。它是一种仅用于管理/var/spool/cron/crontabs中保存的个人(每用户)cron作业的工具。

现在让我们看看如何执行不同的cron作业。 形成cron守护进程的manpage,我们可以读到:

  

cron在其假脱机区域(/ var / spool / cron / crontabs)中搜索crontab文件(以/ etc / passwd中的帐户命名); ...

     

cron还会读取/ etc / crontab,其格式略有不同(请参阅crontab(5))。

以及:

  

此外,在Debian中,cron读取/etc/cron.d目录中的文件。 cron以与/ etc / crontab文件相同的方式处理/etc/cron.d中的文件......

(我认为这也适用于gentoo ......)

关于重新启动,我们可以阅读:

  然后cron每分钟醒来,检查所有存储的crontabs,检查每个命令,看它是否应该在当前分钟运行...

     

此外,cron检查每一分钟以查看其假脱机目录的modtime(或/ etc / crontab文件中的modtime)是否已更改,如果有,cron将检查所有crontabs文件的modtime并重新加载那些已经改变的。因此,无论何时修改crontab文件,都不需要重新启动cron。注意          crontab(1)命令在更改crontab时更新假脱机目录的modtime。

因此crontab命令用于特定于用户的玉米作业,而/etc/cron*中的文件更多用于系统cron作业。

激活新的cron作业不需要手动触发。