使用crontab中的java文件执行bash文件
我编写了一个bash文件,在其中我正在执行java文件,如果我正在执行它,它会正常工作,但当我尝试使用crontab时,它不是,请帮助 这是我的crontab:使用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"
*/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中的命令)使用完整路径
- 确保设置了所有必需的环境变量
$(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