cron.daily 作业未运行

cron.daily 作业未运行

我创建了 3 个每日 cron 作业来运行。

以下是放置在 etc/cron.daily 中的三个

rkhunter.sh

#!/bin/sh
(
rkhunter --versioncheck
rkhunter --update
rkhunter --cronjob --report-warnings-only
) | mail -s 'rkhunter Daily Run (my server)' [email protected]

chkrootkit工具

#!/bin/bash
chkrootkit | mail -s "chkrootkit Daily Run (my server)" [email protected]

日志监控工具

#!/bin/sh
(
logwatch
) | mail -s 'logwatch Daily Log (my server)' [email protected]

我更换了[电子邮件保护]当然是用我的电子邮件。

如果我手动运行这个 cronjob,它可以正常工作./nameoffile.sh

但它并不是每天运行,可能是什么原因或者我该如何检查?

答案1

根据响应,问题在于 .sh 扩展名。删除它(例如,将文件从 rkhunter.sh 重命名为 rkhunter)。

要确认,请运行以下命令run-parts --test /etc/cron.daily

如果您的脚本 (rkhunter) 包含在结果中,则一切正常。有关 run-parts 命令的更多信息,请阅读其手册页man run-parts

答案2

在我的系统中,这是因为没有安装 anacron。

grep run-parts /etc/crontab

17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

因此,要么安装 anacron,要么删除测试 -x /usr/sbin/anacron

答案3

我认为带有扩展名的文件会被忽略。

跑步:

运行部分--测试/etc/cron.daily

如果您没有看到列出的脚本,请删除 .sh 扩展名并重试。

答案4

通常有两个可能的因素会导致cron作业无法运行。

首先是权限问题,即用户可以运行脚本/命令,但 cron 守护程序无法运行,因为该作业位于错误用户的 cron 作业中。例如,用户使用提升的权限(即使用)创建脚本或运行命令sudo,然后将测试的脚本/命令添加到他的 cron 作业列表(crontab)。结果是用户的 cron 作业将无法运行,因为它需要提升的权限。

  • 要将 cron 任务放入当前用户的 crontab 类型crontab -e
  • 要将 cron 任务放入 root 的 crontab 类型中sudo crontab -e

第二个原因是路径,为了确保脚本能够执行,用户必须在 crontab 中添加要执行的脚本的完整路径。另一个解决方案是通过将以下行放在 root 用户的 crontab 文件顶部来扩展 PATH 变量:

PATH=/usr/sbin:/usr/bin:/sbin:/bin

作为社区维基提及

你可能想读社区维基 关于 cron,因为它提供了有关上述内容的更多详细信息。

相关内容