【发布时间】:2011-11-24 00:31:30
【问题描述】:
我正在尝试从 crontab 运行 perl 脚本,但遇到了困难。当我从命令行运行它时,它工作得很好。我已经搜索并看到了关于环境等的各种答案并指定了完整路径,但我不确定我是否做得正确。下面是脚本
#!/usr/bin/perl
$ENV{'PATH'} = '/usr/bin:/usr/sbin/usr/local/bin';
use strict;
my $TG_Stats_directory = "/export/home/SonusNFS/TG_Stats";
opendir TG_Stats, $TG_Stats_directory;
my @GSX_directories = readdir TG_Stats;
foreach my $subdir (@GSX_directories) {
opendir GSX, $subdir;
my @csv_listing = readdir GSX;
foreach my $file (@csv_listing){
if ($file =~ /\.csv/){
unlink $TG_Stats_directory."/".$subdir."/".$file;
}
}
close GSX;
}
close TG_Stats;
下面是 crontab 条目。
25 03 * * * /usr/bin/perl /export/home/SonusNFS/TG_Stats/rmdir.pl 2>/tmp/cronerrors.txt
我错过了什么?我需要添加什么才能让它在 Cron 中运行?
【问题讨论】:
-
您的
/tmp/cronerrors.txt文件中有任何内容吗? -
什么情况下不运行?它从来没有被调用过吗?有错误吗?
-
您可能希望将重定向更改为
>>而不是>,这样您就不会丢失旧错误。 -
您的
$ENV{'PATH'}中缺少一个冒号,但这在这里不重要。你应该在你的目录句柄上使用closedir,而不是close。 -
此外,
unlink确实有一个您可能想要查看的有用返回值(如果unlink失败,则为$!)。