Perl写入不与cron作业一起使用的文件

时间:2014-03-11 19:59:26

标签: perl curl cron

所以,我在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'友好。

1 个答案:

答案 0 :(得分:1)

请记住,用完cron的脚本有不同的环境变量。特别是PATH变量值得关注。

如果你用cron运行上面的脚本," id.txt"将进入cron执行你的脚本的工作目录,这也可能不是你所期望的。

最好的办法是完全限定你的路径名(例如/tmp/id.txt而不是id.txt)并设置记录到这些完全限定的路径名​​之一,这样你就可以捕获这些错误。