我有一个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