我能够从命令行执行脚本。 我这样执行它:
/path/to/script run
但是从下面的cron执行它时,页面不会出现:
55 11 * * 2-6 /path/to/script.pl run >> /tmp/script.log 2>&1
获取网页的行使用LWP::Simple
:
my $site = get("http://sever.com/page") ;
我没有做任何事情。该页面有效且可访问。 只有当我从crontab执行此脚本时,我才会获得enpty页面。我可以从命令行执行它! Crontab由root拥有。工作以root身份执行。
提前感谢任何线索!
答案 0 :(得分:1)
很难说出可能导致此问题的原因,但您的环境与crontab创建的环境之间存在差异。
您可以尝试通过具有适当args的shell运行它来构建您的用户环境:
55 11 * * 2-6 /bin/tcsh -l /path/to/script.pl run >> /tmp/script.log 2>&1
我假设您正在使用自己的用户ID由cron运行它。如果您不是,那么显然您应该尝试使用cron用来运行它的用户ID手动运行它。
答案 1 :(得分:0)
如果环境变量没有区别(例如那些指定使用代理的变量),我相信你正在与SElinux发生冲突。除此之外,它会阻止后台应用程序(例如cron作业)访问Internet,除非您明确允许它们这样做。我不知道该怎么做,但你应该很容易找到。