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

Execution of bash file with java file from crontab

我写了一个 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)启动时,none 设置了自定义路径或其他环境变量等常见的好东西。

规则是:

  • 确保所有命令(最多除了 /bin 和 /usr/bin 中的命令)使用完整路径
  • 确保设置所有必需的环境变量

如果您以这种方式使用许多脚本,则可以构建一个 setenv 脚本来声明所有环境变量并为您使用的每个命令创建环境变量。这里将包含(或多或少):

export JAVAHOME=...
export JAVA=/path/to/java

然后你可以在你的脚本中使用:

$(JAVA) -jar ImportRequirement1.jar

但是在这里你应该有一个先前的 cd 到预期的目录或者使用 jar

的绝对路径