【发布时间】:2014-11-11 17:24:14
【问题描述】:
我正在尝试使用 crontab 每 1 分钟从 bash 脚本运行一个 .class 文件。我收到错误无法找到或加载主类 Cron_Read_Send_CapacityData_To_Graphite。我已经在我的机器上设置了环境变量。
如果我从终端运行 bash 脚本,它工作正常。注意 bash 脚本和 java 类文件在同一个文件夹中
脚本:
$ cat Run_Cron_Read_Send_CapacityData_To_Graphite.sh
#!/bin/bash
java Cron_Read_Send_CapacityData_To_Graphite >> /home/marshell/graphite_cronjobs/Cron_Read_Send_CapacityData_To_Graphite.log
Cron 条目:
$ crontab -e
*/1 * * * * /home/marshell/graphite_cronjobs/Run_Cron_Read_Send_CapacityData_To_Graphite.sh >> /home/marshell/graphite_cronjobs/debug_cronjob.log 2>&1
错误:
Error: Could not find or load main class Cron_Read_Send_CapacityData_To_Graphite
【问题讨论】:
-
您在 shell 初始化文件(或交互式 shell)中设置的环境变量对于从 cron 运行的 shell 可能无效(取决于您的设置方式)。尝试设置类路径/等。明确地在脚本中。
-
您好,我在 /etc/environment 中设置了这是我添加的行 JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java"
-
在没有cron的情况下运行脚本是否有效?
-
我相信
/etc/environment是 pam 的事情,而 cron 也可能不会处理它。 -
是的,如果我不使用 cron 作业,它就可以工作。我尝试从终端运行 .sh 文件,它工作正常
标签: java linux bash crontab ubuntu-14.04