Linux 对我的Cron工作感到困惑吗

Linux 对我的Cron工作感到困惑吗,linux,perl,cron,Linux,Perl,Cron,我有一个perl脚本,我计划每分钟运行一次。 我已将cron作业设置为 * * * * * PATH= /usr/local/bin:/usr/bin:/usr/sbin:/usr/lib; perl /dm2/www/html/isos/pre5.3/autoDownload.pl 我假设脚本每分钟都在执行一次,因为在/var/log中执行cat cron时,我看到如下条目/ Jul 26 04:57:01 dmvbu-build crond[773]: (root) CMD (PATH=

我有一个perl脚本,我计划每分钟运行一次。 我已将cron作业设置为

* * * * * PATH= /usr/local/bin:/usr/bin:/usr/sbin:/usr/lib; perl /dm2/www/html/isos/pre5.3/autoDownload.pl 
我假设脚本每分钟都在执行一次,因为在/var/log中执行cat cron时,我看到如下条目/

Jul 26 04:57:01 dmvbu-build crond[773]: (root) CMD (PATH= /usr/local/bin:/usr/bin:/usr/sbin:/usr/lib; perl /dm2/www/html/isos/pre5.3/autoDownload.pl)

Jul 26 04:58:01 dmvbu-build crond[687]: (root) CMD (PATH= /usr/local/bin:/usr/bin:/usr/sbin:/usr/lib; perl /dm2/www/html/isos/pre5.3/autoDownload.pl)
但我的问题是我有这样的陈述

print LOG "connecting to website\n"
其中LOG是名为LOG.txt的文件的文件描述符,该文件位于 dm2/www/html/isos/pre5.3/(与autoDownload.pl位置相同)

但是在我看到cron日志文件中的条目之后,我没有看到这个log.txt文件更新了新的信息
但是当我手动运行代码时,我看到此文件正在更新

您必须删除
路径中
=
后的额外空间

PATH=/usr/local/bin:/usr/bin:/usr/sbin:/usr/lib

您必须删除路径
中的
=
后面的多余空格

PATH=/usr/local/bin:/usr/bin:/usr/sbin:/usr/lib

cron
行应该是

* * * * * PATH=/usr/local/bin:/usr/bin:/usr/sbin:/usr/lib perl /dm2/www/html/isos/pre5.3/autoDownload.pl

注意
=
后面没有空格,
perl
前面没有分号,
cron
行应该是

* * * * * PATH=/usr/local/bin:/usr/bin:/usr/sbin:/usr/lib perl /dm2/www/html/isos/pre5.3/autoDownload.pl
* * * * * /dm2/www/html/isos/pre5.3/autoDownload.pl &> /tmp/autoDownload.log

请注意,
=
之后没有空格,
perl

之前没有分号,
open()
-ing时提供日志文件的绝对路径(
/dm2/www/html/isos/pre5.3/log.txt
而不仅仅是
log.txt
),否则必须确保“当前工作目录”cron的位置就是你想要的位置

* * * * * /dm2/www/html/isos/pre5.3/autoDownload.pl &> /tmp/autoDownload.log

还要检查执行此命令的用户是否具有对文件的写入权限。

打开()
-ing时,提供日志文件的绝对路径(
/dm2/www/html/isos/pre5.3/log.txt
而不仅仅是
log.txt
),否则必须确保“当前工作目录”cron的位置就是你想要的位置


还要检查执行此命令的用户是否具有对文件的写入权限。

当您有输出/错误时,调试程序要容易得多。 您还应该在脚本顶部或cron行中使用perl的绝对路径。然后,您应该能够摆脱任何
$PATH
混乱

# Make sure you script is executable
chmod a+x /dm2/www/html/isos/pre5.3/autoDownload.pl
尝试将
MAILTO
行添加到进程上方的cron

MAILTO="me@example.com"
* * * * * /usr/bin/perl /dm2/www/html/isos/pre5.3/autoDownload.pl
或者,也可以将cron输出记录到文件中以查看错误。在crontab中去掉
/usr/bin/perl
,确保它是脚本
#的第一行/usr/bin/perl

* * * * * /dm2/www/html/isos/pre5.3/autoDownload.pl &> /tmp/autoDownload.log

当您有输出/错误时,调试程序要容易得多。 您还应该在脚本顶部或cron行中使用perl的绝对路径。然后,您应该能够摆脱任何
$PATH
混乱

# Make sure you script is executable
chmod a+x /dm2/www/html/isos/pre5.3/autoDownload.pl
尝试将
MAILTO
行添加到进程上方的cron

MAILTO="me@example.com"
* * * * * /usr/bin/perl /dm2/www/html/isos/pre5.3/autoDownload.pl
或者,也可以将cron输出记录到文件中以查看错误。在crontab中去掉
/usr/bin/perl
,确保它是脚本
#的第一行/usr/bin/perl

* * * * * /dm2/www/html/isos/pre5.3/autoDownload.pl &> /tmp/autoDownload.log

您是否检查了cron发送的包含错误的邮件?或者,通过logger将stdout和stderr传输到syslog.BTW,为什么要以root用户身份运行此脚本?它可能在正常用户权限下也能工作。如何检查来自cron的邮件?我希望它在root中工作only@mac:至于阅读root的电子邮件,最好在serverfault.com上查询。最常见的方法是使用别名,例如,在后缀中它是
根:admin@my.company.com
/etc/alias
中的
。您是否检查了cron发送的包含错误的邮件?或者,通过logger将stdout和stderr传输到syslog.BTW,为什么要以root用户身份运行此脚本?它可能在正常用户权限下也能工作。如何检查来自cron的邮件?我希望它在root中工作only@mac:至于阅读root的电子邮件,最好在serverfault.com上查询。最常见的方法是使用别名,例如,在后缀中它是
根:admin@my.company.com
/etc/alias
中的
。对不起,路径中没有空格。我在这里输入时出错了对不起,路径中没有空格。我在输入hereYa时犯了一个错误,我认为cron会自动在当前目录中运行脚本。thnksYa,我想cron会自动在当前目录中运行脚本。thnks