Linux 对我的Cron工作感到困惑吗
我有一个perl脚本,我计划每分钟运行一次。 我已将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=
* * * * * 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