从 crontab 执行带有 java 文件的 bash 文件



我写了一个 bash 文件,我正在执行 java 文件,如果我执行它,它可以正常工作,但是当我尝试使用 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

我已经删除了网址。

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

规则是:

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

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

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

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

$(JAVA) -jar ImportRequirement1.jar

但在这里,您应该对预期目录有先前cd或使用 jar 的绝对路径

cron 作业的环境变量与用户登录时获得的环境变量不同。仔细检查运行脚本所需的环境变量(即 JAVA_HOME 和 PATH)。cron 可能不知道用什么来解释你的脚本,你可能想放置

#!/bin/bash

在 bash 脚本的第一行。

相关内容

  • 没有找到相关文章