1

我不知道为什么我的 cronjob 没有被执行。以下是详细信息:

我在 /usr/src 中有一个名为 stundenplan.sh 的脚本,它执行一个 jar 文件。如果您从控制台运行脚本,它本身就可以工作。但是尝试从 cronjob 运行它是行不通的。

脚本如下所示:

#!/bin/sh
java -jar vorlesungsplaene.jar

jar 文件位于与预期相同的目录中。

我定义了两个 cronjobs:

# m h  dom mon dow   command
  30 * * * * /usr/src/stundenplan.sh
 0-59 * * * * echo "dude" >> /tmp/test.txt

下面的工作很好,在 test.txt 文件中一丝不苟地写着“dude”。

正如您在 syslog 中看到的,上面的作业失败了:

Jul 18 15:29:01 vps47327 /USR/SBIN/CRON[16361]: (root) CMD (echo "dude" >> /tmp/test.txt)
Jul 18 15:30:01 vps47327 /USR/SBIN/CRON[16364]: (root) CMD (/usr/src/stundenplan.sh)
Jul 18 15:30:01 vps47327 /USR/SBIN/CRON[16365]: (root) CMD (echo "dude" >> /tmp/test.txt)
Jul 18 15:30:01 vps47327 /USR/SBIN/CRON[16363]: (CRON) error (grandchild #16364 failed with exit status 1)

有什么建议、想法或解决方案吗?;)

4

1 回答 1

5

它看起来像一个路径问题。Crontab 可能是从某个任意目录运行的,因此它找不到 jar 文件。

尝试做:

30 * * * * cd /usr/src && ./stundenplan.sh

这并不是最漂亮的解决方法,但如果它有效,那么至少你知道问题出在哪里。可能将 jar 文件的完整路径放在脚本中可能更优雅,但我会把这个问题留给你。:)

希望能帮助到你!

于 2012-07-18T15:31:38.087 回答