配置 cron.hourly

配置 cron.hourly

我无法通过将 cron 作业放置在 /etc/cron.hourly 文件夹中来配置其运行。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

cron.hourly 下的文件是:

lrwxrwxrwx 1 root root   40 2010-07-26 14:52 check -> /usr/local/xxxx/check-interface.bash

文件的权限:

-rwxr-xr-x 1 root root 1.6K 2010-09-13 11:22 /usr/local/xxxx/check-interface.bash

var/log/cron 日志文件中似乎没有报告错误。没有提及剧本。 :(

答案1

为了隔离问题,将 /usr/local/xxxx/check-interface.bash 移动到 /etc/cron.hourly/check ,然后查看它是否运行。

如果脚本确实运行,则问题是由所有权/权限或相关问题引起的,这些问题阻止 cron 执行 /usr/local/xxxx/* 处的脚本。

如果脚本不运行,则问题很可能出在脚本本身。

作为另一项健全性检查,将 的内容替换/usr/local/xxxx/check-interface.bash为非常简单的内容,例如:

date > /tmp/check-interfaces.log 2>&1

然后查看 /tmp/check-interfaces.log 是否确实由您的 cronjob 填充。如果它确实有效,那么问题一定出在您的原始脚本上。

答案2

我只是想确认一下沙杜尔前面提到过,问题在于默认情况下 cron 使用的“run-parts”应用程序将仅运行仅包含 ASCII 字母、_和 的命令-。来自官方手册页:

   If  neither the --lsbsysinit option nor the --regex option is given then the names must consist entirely of ASCII upper- and lower-case letters, ASCII digits,
   ASCII underscores, and ASCII minus-hyphens.

相关内容