perl – 为什么我的命令行不能从cron运行?

前端之家收集整理的这篇文章主要介绍了perl – 为什么我的命令行不能从cron运行?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个perl脚本( XMLTV系列“抓取器”的一部分,特别是 tv_grab_oztivo).

我可以像这样成功运行它:

/sw/bin/perl /path/to/tv_grab_oztivo --output /path/to/tv.xml

我使用完整的路径来消除工作目录中的问题.权限应该不是问题.

所以,如果我从终端(Mac OSX)运行它,它的工作正常.

但是,当我将其设置为通过cron作业运行时,似乎根本没有发生任何事情.没有创建输出等.

据我所知,crontab没有任何问题,因为如果我用helloworld.pl替换实际的脚本,它会在正确的时间运行.

那么,我该怎么做才能调试?我可以从两个案例中看到%ENV看到环境非常不同,但我可以采取哪些其他方法进行调试?我怎样才能看到cron作业的输出,这可能是shell中的某种perl“die”消息或“not found”消息或者其他什么?

或者我应该尝试以某种方式给出命令的cron版本与它作为我运行时相同的环境?

解决方法

这通常是因为在cron下运行时没有获得完整的环境.最好的办法是使用以下命令捕获输出
( /sw/bin/perl /path/to/tv_grab_oztivo ... ) >/tmp/qq 2>&1

然后看看/ tmp / qq.

如果它确实是一个缺失的环境,那么你可能需要把:

. ~/.profile

或者类似的东西,进入你的cron作业的执行链,例如:

( . ~/.profile ; /sw/bin/perl /path/to/tv_grab_oztivo ... ) >/tmp/qq 2>&1
原文链接:https://www.f2er.com/Perl/172829.html

猜你在找的Perl相关文章