【问题标题】:Perl write to a file not working with cron jobPerl 写入文件不能使用 cron 作业
【发布时间】:2014-03-11 19:59:26
【问题描述】:

所以,我有一个相当大的 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 时,它以某种方式绕过了这一点。

为了让脚本完成其任务,它必须将 cookie 写入文件。它从不这样做。虽然看起来确实完成了任务(虽然没有写入 ids.txt)。

我使用 Godaddy 作为服务器主机。

目前使用 Linux CPanel 托管。

* 注意:我没有输入任何特殊参数来使脚本“cron”友好。

【问题讨论】:

    标签: perl curl cron


    【解决方案1】:

    请记住,用完 cron 的脚本具有不同的环境变量。 PATH 变量尤其值得关注。

    如果您从 cron 运行上述脚本,“id.txt”将转到 cron 执行脚本的工作目录,这也可能不是您所期望的。

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

    【讨论】:

    • 当我在混合环境中设置我的 crons 时,我也在 cron 选项卡中设置了路径。
    猜你喜欢
    • 2011-05-29
    • 2019-10-10
    • 2013-05-09
    • 1970-01-01
    • 2020-05-08
    • 2014-12-15
    • 2013-07-05
    • 1970-01-01
    • 2021-05-08
    相关资源
    最近更新 更多