繁体   English   中英

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

[英]How to handle crontab events on a gentoo Linux system?

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

crontab -l

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

但是,在/etc/cron.d还有两个crontab文件,每个文件定义一个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进行注册,还是需要重新启动守护程序/服务? 为什么一个启动,而不是另一个启动(尽管可执行文件运行良好)。

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

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

现在让我们看看如何执行不同的cron作业。 在cron守护程序的联机帮助页中,我们可以阅读:

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

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

以及:

另外,在Debian中,cron读取/etc/cron.d目录中的文件。 cron将/etc/cron.d中的文件与/ etc / crontab文件中的文件对待方式相同...

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

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

然后cron每分钟醒来一次,检查所有存储的crontab,检查每个命令以查看是否应在当前分钟内运行...

另外,cron每分钟检查一次,以查看其假脱机目录的modtime(或/ etc / crontab文件上的modtime)是否已更改,如果已更改,则cron随后将检查所有crontabs文件上的modtime并重新加载已更改的文件。 因此,无论何时修改crontab文件,都无需重新启动cron。 请注意,只要crontab(1)命令更改了crontab,它就会更新假脱机目录的modtime。

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

无需手动触发即可激活新的cron作业。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM