我刚刚开始学习 cron 作业。基本上我将使用 webmin 来管理我的 cron 作业,我也在阅读有关 cron 作业的一些基本信息。
到目前为止,我已经了解到它/etc/crontab
存储 cronjobs 并/var/spool/cron/crontabs
为不同的用户提供 cron 作业,并且当我这样做时,crontab -e
我可以查看和编辑当前用户的 cron 作业。
Root 是我的 Ubuntu 14.04 中唯一的用户,我在上述位置找到的 crontab 文件中只有几行。然而,在 webmin 中,这就是我看到的
这比我在这些文件中看到的要多得多。所以我的问题是:我在 webmin 中看到的所有这些 cronjobs 来自哪里?
答案1
有几个地方存储了 cron 作业。
主要的地方是/etc/crontab
(在某些系统上,这是唯一的地方)。该文件只能由 root 编辑,并且通常允许指定作业应以哪个用户身份运行。
在某些系统上,还有一个目录 - /etc/cron.d
- 补充/etc/crontab
.这里的文件包含类似于所用的行/etc/crontab
(通常由用户按指定运行),并且基本上添加到/etc/crontab
.它使包可以轻松地将条目添加到主 crontab 文件中。
然后是每用户的 crontabs - 包括 root、普通用户和一些系统用户(通常由软件包添加) - 可以在/var/spool/cron/crontab
用户特定的文件下找到......这就是您使用crontab -e
.在某些系统上,可以通过使用/etc/cron.allow
或来阻止部分或所有用户/etc/cron.deny
。
您可以通过使用#
.
最后我们有名为/etc/cron.hourly
、cron.daily
和cron.weekly
的目录cron.monthly
。这些包含 shell 脚本 -不是crontab 条目,例如/etc/cron.d
.但是,cron 守护程序将查看这些目录,并在适当的时间运行这些脚本。您可以找到“run.daily”、“run.weekly”和类似的条目 - 通常在/etc/crontab
- 这是实际解析和运行这些脚本的内容。要禁用这些目录中的脚本,删除执行权限应该可以解决问题。
这些问题以及一般情况下的另一个问题cron
是计算机是否打开离开,在一些 cron 条目应该运行的时期。如果是这种情况,这些作业可能(几乎)永远不会运行。一些cron
守护进程有解决这个问题的机制,或者使用一个额外的类似 crond 的程序(例如anacron
) - 但一般来说,运行的计算机cron
应该是在每时每刻。
此外,at
-and batch
-机制在某些系统上作为 cron-jobs 运行,而不是由它自己的专用守护进程运行。
+++
您见过的大多数奇怪的条目都是由包添加到/etc/cron.{hourly|daily|weekly|monthly}
目录中的 shell 脚本。它们可能会执行诸如刷新缓冲区、压缩日志、添加更新或进行一般清理之类的操作。如前所述,这些并不是真正的 crontab 条目,而是 shell 脚本...只是cron
会检查这些目录,并不时运行它们的内容。
明显webmin
检查全部cron 相关目录,并列出所有条目。
除非条目/脚本 - 在 /etc/crontab、/etc/cron.d、/etc/cron.d 中。特定时间的或 /var/spool/cron/crontab/用户- 是为你提供一些服务知道你和你的系统是绝对不使用(例如,uucp
或news
,在不使用 uucp 或运行新闻服务器的计算机上);最好保持原样。无论如何,大多数这些 cron 作业都会在“非工作时间”(例如半夜)运行,并且应该不会很引人注目。毕竟,“如果它没有坏,就不要修理它”。