Zip文件不是由crontab提取的

时间:2014-01-21 09:24:20

标签: linux perl unzip

我使用perl脚本通过crontab解压缩zip文件。如果我手动执行它,脚本正常工作。但每当我在cron中设置它时,脚本就不再起作用了。我已经测试过cron设置其他脚本文件正在从cron工作,只有这个zip解压缩脚本不起作用。

脚本如下:

#!/usr/bin/perl
use IO::Uncompress::Unzip qw(unzip $UnzipError);
$dir = '/root/perl';
open (han2, "ls -l $dir/*.zip |awk '{print \$9}'|");
@array1 = <han2>;
chomp(@array1);
for ($i=0;$i<=$#array1;$i++) {

$zipfile = $array1[$i];
$u = new IO::Uncompress::Unzip $zipfile
    or die "Cannot open $zipfile: $UnzipError";

die "Zipfile has no members"
    if ! defined $u->getHeaderInfo;

for ( $status = 1; $status > 0; $status = $u->nextStream) {
     $name = $u->getHeaderInfo->{Name};
    warn "Processing member $name\n" ;

    if ($name =~ /\/$/) {
        mkdir $name;
    }
    else {
        unzip $zipfile => $name, Name => $name
            or die "unzip failed: $UnzipError\n";
    }
}

}

Crontab设置:

34 14 * * * /root/perl/./unzip.pl > /dev/null 2>&1

请帮我通过cronjob

完成这项任务

1 个答案:

答案 0 :(得分:2)

当cron执行你的脚本时,当前的directoy可能不会/root/perl。设置chdir($dir)后尝试$dir,或在需要时使用完整路径名

$u = new IO::Uncompress::Unzip "$dir/$zipfile"
or die "Cannot open $zipfile: $UnzipError";

mkdir "$dir/$name";

unzip "$dir/$zipfile" => "$dir/$name" ...

更改到正确的目录可能更容易。