所以,我在perl中有一个相当大的脚本,我最近才开始从我的服务器主机中使用Cron。
在脚本中,我写了一个这样的文件:
$filename = 'ids.txt';
open($fh, '>>', $filename) or die "Could not open file '$filename' $!";
print $fh "$id ";
close $fh;
print "Write to File Complete.\n";
当我正常执行CGI脚本时(通过浏览器访问该页面),它完全正常。 但是,当我使用Cron自动执行脚本时,显然没有任何内容写入文件。
在同一个脚本中,我还将cookie(带有cURL)写入这样的文件:
my $CURL = "curl -s -b cookie_$id -c cookie_$id -L";
然后当然使用tic标记(`)执行它。这通常有效。假设将cookie写入文件名cookie_(无论变量ID是什么)。
虽然在使用Cron时,它会以某种方式绕过它。
为了让脚本完成其任务,IT必须将cookie写入文件。它永远不会。虽然看起来确实完成了任务(虽然没有写入ids.txt)。
我使用Godaddy作为服务器主机。
目前正在使用Linux CPanel托管。
* 注意:我没有添加任何特殊参数来制作脚本' cron'友好。
答案 0 :(得分:1)
请记住,用完cron的脚本有不同的环境变量。特别是PATH变量值得关注。
如果你用cron运行上面的脚本," id.txt"将进入cron执行你的脚本的工作目录,这也可能不是你所期望的。
最好的办法是完全限定你的路径名(例如/tmp/id.txt而不是id.txt)并设置记录到这些完全限定的路径名之一,这样你就可以捕获这些错误。