脚本无法使用cronjob

时间:2017-09-17 17:14:56

标签: java bash cron

我有一个java程序,必须在DB上运行才能重新索引条目。这项工作必须每周进行一次。 我编写了一个执行程序的脚本:

<button>

我将Java路径放在变量中的原因是因为我希望它是通用的,我们在每个环境中的不同位置安装Java。 通过手动执行此脚本,它可以完美运行。

var=$(which java)
nohup $var -Xmx2048m -jar javaProgram.jar $* -d javaProgramResource -re > /nfs/inf/app_storage/logs/service/service_refresh.log 2>&1 &

现在,我想创建一个每周执行一次这个脚本的cron作业(每个星期六早上6点 - 这个作业的持续时间大约是16个小时,因为数据库中有很多条目)。

./reindex.sh

我没有在日志文件中获取已编辑的索引(比如我手动启动脚本),而是收到一条消息:

0    6    *    *    6  cd /locattion/of/the/file; ./reindex.sh

我猜这是一个语法错误,但我不熟悉bash脚本和命令。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 在.profile文件中是脚本中所需的所有变量。 我只是将.profile文件的路径添加到cronjob中,它运行得很好。

0    6    *    *    6  . $HOME/.profile; cd /locattion/of/the/file; ./reindex.sh

现在cronjob知道Java-Path(因为它是在.profile文件中编写的)和javaProgramResource的名称,它在每个环境中也是不同的。 你们给了我一些非常重要的意见,我应该继续调查这个主题。谢谢!