[英]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.