使用 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
的绝对路径
我写了一个 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