【发布时间】:2013-04-19 10:39:41
【问题描述】:
my $systemDateState = system "date";
my $systemXXXXState = system "xxxx";#xxxx is a program
print "$systemDateState\n";
print "$systemXXXXState\n";
这个 perl 脚本打印两个零。它从命令行工作。但是在cron作业中执行这个脚本时,它返回一个零和一个-1。
-1 表示 xxxx 从未被执行。我尝试直接在 cron 作业中执行 xxxx。 xxxx 执行正常。 cron 作业中的 perl 脚本系统日期有效。为什么 cron 作业中的 perl 脚本系统 xxxx 从未执行?
【问题讨论】:
-
Perl 在 cron 作业中启动时的当前目录可能与您预期的不同。尝试使用
xxxx的绝对路径。 -
@dan1111 和不同的 PATH 环境变量
-
@PSIAlt,是的,但我怀疑情况是否如此,因为只是将
xxxx放入 cron 作业中是有效的。 -
@dan1111 @PSIAIt 我在 cron 作业中添加了 PATH 环境变量。这里的情况是因为行结束。在 a.sh 中是
set Path & xxxx,在 b.sh 中是set Path & perl script.pl。 cron 作业中的 a.sh 有效,b.sh 无效。区别在于 Unix 格式的 a.sh 和 Win 格式的 b.sh。我更改了 b.sh 的格式,它也可以正常工作。 -_-||