Perl 不在 crontab 中执行

Posted

技术标签:

【中文标题】Perl 不在 crontab 中执行【英文标题】:Perl not executing in crontab 【发布时间】:2011-10-14 23:02:33 【问题描述】:

我的 perl 脚本没有在 crontab 中执行,

我不知道如何确认,但我没有看到脚本结果或输出。

但在 cron 日志中,我看到一个类似的条目 7 月 28 日 12:35:01 dvsbi-build crond[13469]: (root) CMD (PATH=/usr/local/bin:/usr/sbin/usr/lib perl /dm2/www/html/isos/preFCS5.3 /autodownload.pl)

我将 cron 作业设置为

35 12 * * 2-6 PATH=/usr/local/bin:/usr/sbin/usr/lib perl /dm2/www/html/isos/preFCS5.3/autodownload.pl

我看不到 perl 脚本的结果。在脚本中,我已将所有调试语句重定向到 LOG 文件,但没有看到日志文件更新。

perl 脚本可以在终端中的任何地方手动运行,通过提供类似

的路径
perl /dm2/www/html....../autoDownload.pl 

我还给出了脚本内日志文件的完整路径。

【问题讨论】:

你可以尝试执行“which perl”来查看它的位置吗? cron 条目中的 PATH 是否正确? 为什么自上一个问题以来更改了 PATH? (***.com/questions/6829648/confused-with-my-cron-job)。至少,您在 /usr/sbin 和 /usr/lib 之间缺少一个 :。可能缺少 /usr/bin 整体。 好的,谢谢大家,我删除了 PATH 并把 perl /path/to/perl/script/script.pl 和它的工作,但我不知道它为什么工作。如果你们知道,请告诉我 【参考方案1】:

您应该在 cron 中使用 perl 的完整路径。 cron 的一些实现限制了环境变量的使用。

尝试使用which perl 找出 perl 在您系统上的位置,就像 sergio 评论的那样。

鉴于 perl 在 /usr/bin 中,请尝试以下操作:

35 12 * * 2-6 /usr/bin/perl /dm2/www/html/isos/preFCS5.3/autodownload.pl

【讨论】:

好的,谢谢大家,我删除了 PATH 并把 perl /path/to/perl/script/script.pl 和它的工作,但我不知道它为什么工作。如果你们知道,请告诉我 通常 cron 有自己的 PATH 变量。它通常包含/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin。您的行工作的原因是您的 perl 解释器位于这些目录之一中。

以上是关于Perl 不在 crontab 中执行的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu使用crontab执行定时任务基础知识

Linux -定时任务调度

linux 系统写的 perl程序,单独可以执行,但放入crontab里后就不执行了

周期性执行任务:Cron用法(CentOS7)

Crontab/Perl 管道魔术[重复]

使用Crontab定时执行Spark任务