【问题标题】:Execute perl script in cron job , "system" command return -1在 cron 作业中执行 perl 脚本,“system”命令返回 -1
【发布时间】: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 的格式,它也可以正常工作。 -_-||

标签: perl cron


【解决方案1】:

这里的情况是因为行结束。在 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 的格式,它也可以正常工作。 -_-||

【讨论】:

    【解决方案2】:

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

    cd cronjobs && perl cronjob.pl
    

    【讨论】:

      猜你喜欢
      • 2012-03-02
      • 2018-05-20
      • 2011-01-24
      • 2019-06-05
      • 2017-10-26
      • 2014-04-16
      • 1970-01-01
      • 2020-12-27
      • 2014-02-13
      相关资源
      最近更新 更多