2013-04-12 173 views
1
my $systemDateState = system "date"; 
my $systemXXXXState = system "xxxx";#xxxx is a program 
print "$systemDateState\n"; 
print "$systemXXXXState\n"; 

这个perl脚本打印两个零。它从命令行工作。但是在cron作业中执行此脚本时,它会返回一个零和一个-1。在cron作业中执行perl脚本,“system”命令返回-1

-1表示xxxx从未执行过。我喜欢在cron作业中直接执行xxxx。 xxxx执行正常。 perl脚本系统日期在cron工作。为什么在cron作业中的perl脚本系统xxxx从未执行过?

+3

在cron作业中启动Perl时,可能会有与您期望的不同的当前目录。尝试使用'xxxx'的绝对路径。 – 2013-04-12 08:03:18

+0

@ dan1111和不同的PATH环境变量 – PSIAlt

+0

@PSIAlt,是的,但我怀疑是这种情况,因为只是把'xxxx'放在cron作业中。 – 2013-04-12 09:56:26

回答

1

这里的情况是因为行结束。它是b.sh中的a.sh和set Path & perl script.pl中的set Path & xxxx。 cron工作中的a.sh正在工作,b.sh不是。不同之处在于Unix格式的a.sh,Win格式的b.sh。我改变b.sh的格式,它也在工作。 -_- ||

0

尝试编辑您的cronjob以强制正确的目录。例如:

cd cronjobs && perl cronjob.pl