我可以从命令行执行脚本。我像这样执行它:
/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用户身份执行作业。
提前感谢您的任何提示!
发布于 2015-10-23 19:01:10
很难说是什么原因导致了这种情况,但您的环境和crontab创建的环境之间存在差异。
您可以尝试使用适当的参数通过shell运行它,以构建您的用户环境:
55 11 * * 2-6 /bin/tcsh -l /path/to/script.pl run >> /tmp/script.log 2>&1
我假设您使用自己的用户ID通过cron运行它。如果不是,那么显然您应该尝试使用cron用来运行它的用户ID手动运行它。
发布于 2015-10-23 23:31:07
如果这不是环境变量的不同(例如,指定要使用的代理的环境变量),我相信您正在与SElinux发生冲突。除此之外,它还阻止后台应用程序(例如cron作业)访问internet,除非您显式地允许它们这样做。我不知道如何做到这一点,但您应该能够很容易地找到答案。
https://stackoverflow.com/questions/33300159
复制相似问题