【问题标题】:Bash Script unable to run Java Program as cron jobBash 脚本无法将 Java 程序作为 cron 作业运行
【发布时间】: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


【解决方案1】:

您的错误消息表明您的类路径设置不正确,无法让脚本找到Cron_Read_Send_CapacityData_To_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

【讨论】:

  • 这个 crontab 条目会在系统重启时启动吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-04
  • 2021-06-18
  • 1970-01-01
  • 2013-03-16
  • 1970-01-01
  • 2014-01-21
  • 2012-10-17
相关资源
最近更新 更多