使用crontab中的java文件执行bash文件

使用crontab中的java文件执行bash文件,java,linux,bash,command-line,crontab,Java,Linux,Bash,Command Line,Crontab,我编写了一个bash文件,在其中我正在执行java文件,如果我正在执行它,它会正常工作,但当我尝试使用crontab时,它不是,请帮助 这是我的crontab: */5 * * * * /home/import.sh >/dev/null 2>&1 这是我的bash文件: - me=$(date +%Y-%m-%d) mkdir -p /home/importRequirement"$foldername"

我编写了一个bash文件,在其中我正在执行java文件,如果我正在执行它,它会正常工作,但当我尝试使用crontab时,它不是,请帮助

这是我的crontab:

*/5 * * * * /home/import.sh >/dev/null 2>&1
这是我的bash文件:

                - me=$(date +%Y-%m-%d)
                mkdir -p  /home/importRequirement"$foldername"
                  {
                  java -jar ImportRequirement1.jar 
                  java -jar ImportRequirement1.jar 
                  }

         2>importRequirement"$foldername"/log$(date +%Y-%m-%d-%H-%M-%S).txt

我已删除url。

cron作业的环境变量与用户登录时得到的环境变量不同。仔细检查运行脚本所需的环境变量(例如JAVA_HOME和PATH)。 cron可能不知道如何解释您的脚本,您可能希望

#!/bin/bash

在bash脚本的第一行。

当脚本打算从非交互环境(cron或init)启动时,不会设置任何常用功能,例如自定义路径或其他环境变量

规则是:

  • 确保所有命令(最多不包括/bin和/usr/bin中的命令)使用完整路径
  • 确保设置了所有必需的环境变量
如果以这种方式使用许多脚本,则可以构建一个setenv脚本,该脚本声明所有环境变量,并为您使用的每个命令创建一个环境变量。在这里,它将包含(或多或少):

然后,您可以在脚本中使用:

$(JAVA) -jar ImportRequirement1.jar

但是在这里,您应该有一张先前的
cd
到预期目录,或者使用jar的绝对路径检查您的环境路径。它包括java命令的位置吗?您可能需要包括
java
的绝对路径以及要执行的jar文件的绝对路径。您还应该在cronjob表达式-->
*/5****/bin/bash/home/import.sh>/dev/null 2>&1中添加
/bin/bash
,定义它不工作:crontab工作吗?是的,crontab正在工作,非常感谢讨论这个问题,我无法想象我的代码中有什么问题,这就是解决方案。
$(JAVA) -jar ImportRequirement1.jar