脚本手动工作但不在 cron 作业中

Use*_*283 1 cron

我使用 perl 脚本在 rrd 中创建了我的系统图。当我手动运行脚本时,它会更新图表。另一方面,cron 在日志中显示作业已执行,但不更新图表.. 有什么帮助吗?

我已经设置了 apache2 目录权限 root:apache 与 770

发行版:CentOs 5.5。

定时配置:

0,5,10,15,20,25,30,35,40,45,50,55 * * * *       /home/user/graphs/script-rrd.pl  > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

我已经检查了 /var/log/cron 它表明上面的脚本已经被执行,但它没有更新 /var/html/www/graphs.png 中的图形

此问题的解决:

cp -rf /opt/rrdtool-1.4.4/lib/perl/5.8.8/i386-linux-thread-multi/* /usr/lib/perl/site_perl

在 /usr/lib/perl5/site_perl 中复制 rrd 内容后问题已解决。

我已经创建了 PERL5LIB。创建 PERL5LIB 后,我能够手动运行脚本,但它不是由 cron 运行的,所以这就是为什么我必须复制上述文件。

SELINUX 如下: SELINUX=disabled SELINUXTYPE=targeted SETLOCALDEFS=0

Gil*_*il' 6

您的 cron 行中有一个明显的错误:您将错误输出重定向到/dev/null. 不要这样做,并查看您的邮件,看看出了什么问题。

cron 作业的一个常见问题是它们的环境非常有限:您.profile的未读。您可能需要为要运行的脚本定义一些环境变量。

补充:你做了:

cp -rf /opt/rrdtool-1.4.4/lib/perl/5.8.8/i386-linux-thread-multi/* /usr/lib/perl/site_perl
Run Code Online (Sandbox Code Playgroud)

馊主意!您不应该将自己的文件放入/usr(外部/usr/local)。该区域保留给包管理器。当然,现在很容易,但是明天你遇到麻烦(例如升级 rrdtool 时),然后就很难调试了。

相反,按照人们的建议去做,并在您的脚本(或源代码~/.profile)中定义必要的环境变量;你需要PERL5LIB(也许还有其他人)。