我有一个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脚本和命令。
答案 0 :(得分:0)
我找到了解决方案。 在.profile文件中是脚本中所需的所有变量。 我只是将.profile文件的路径添加到cronjob中,它运行得很好。
0 6 * * 6 . $HOME/.profile; cd /locattion/of/the/file; ./reindex.sh
现在cronjob知道Java-Path(因为它是在.profile文件中编写的)和javaProgramResource的名称,它在每个环境中也是不同的。 你们给了我一些非常重要的意见,我应该继续调查这个主题。谢谢!