Bash脚本无法将Java程序作为cron作业运行

Bash脚本无法将Java程序作为cron作业运行,java,linux,bash,crontab,ubuntu-14.04,Java,Linux,Bash,Crontab,Ubuntu 14.04,我正在尝试使用crontab每隔1分钟从bash脚本运行一个.class文件。我发现错误,无法找到或加载主类Cron_Read_Send_CapacityData_To_Graphite。我已经在我的机器上设置了环境变量 如果我从终端运行bash脚本,它可以正常工作 脚本: $ cat Run_Cron_Read_Send_CapacityData_To_Graphite.sh #!/bin/bash java Cron_Read_Send_CapacityData_To_Graphite &

我正在尝试使用crontab每隔1分钟从bash脚本运行一个.class文件。我发现错误,无法找到或加载主类Cron_Read_Send_CapacityData_To_Graphite。我已经在我的机器上设置了环境变量

如果我从终端运行bash脚本,它可以正常工作

脚本:

$ 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

您的错误消息表明您的类路径设置不正确,脚本无法找到
Cron\u Read\u Send\u CapacityData\u to\u Graphite.class
,我将使用以下命令-

CP=/home/marshell/graphite_cronjobs # The classpath to use
LF=$CP/Cron_Read_Send_CapacityData_To_Graphite.log # the log file
java -cp $CP Cron_Read_Send_CapacityData_To_Graphite >> $LF

在shell init文件(或交互式shell)中设置的环境变量对于从cron运行的shell可能无效(取决于设置方式)。尝试在脚本中显式设置类路径/etc。您好,我在/etc/environment中设置了它这是我添加的JAVA_HOME=“/usr/lib/jvm/JAVA-7-openjdk-amd64/jre/bin/JAVA”行如果在没有cron的情况下运行脚本,它会工作吗?我相信
/etc/environment
是pam的事情,cron可能也不会处理这个问题。是的,如果我不使用cron job,它会工作。我试着从终端运行.sh文件,它工作正常。这个crontab条目会在系统重新启动时启动吗?