我有一个java程序,它必须运行在DB上才能重新索引条目。这是一项每周必须做一次的工作。我编写了一个执行程序的脚本:
var=$(which java)
nohup $var -Xmx2048m -jar javaProgram.jar $* -d javaProgramResource -re > /nfs/inf/app_storage/logs/service/service_refresh.log 2>&1 &我将Java路径放入变量中的原因是因为我希望它是通用的,我们在每个环境的不同位置都安装了Java。通过手动执行此脚本,它的工作非常完美。
./reindex.sh现在,我想创建一个cron作业,它每周执行这个脚本一次(每个星期六早上6点,因为DB中有很多条目,这个作业的持续时间大约是16个小时)。
0 6 * * 6 cd /locattion/of/the/file; ./reindex.sh与其在日志文件中获取已编辑的索引(比如手动启动脚本时),我只需要收到一条消息:
nohup: invalid option -- 'X'
Try `nohup --help' for more information我想这是语法错误,但我不熟悉bash脚本和命令。
发布于 2017-09-19 07:28:00
我找到了解决办法。在.profile文件中是脚本中所需的所有变量。我只需将.profile文件的路径添加到cron作业中,它就工作得很好。
0 6 * * 6 . $HOME/.profile; cd /locattion/of/the/file; ./reindex.sh现在,cronjob知道了Java(因为它是在.profile文件中编写的)和javaProgramResource的名称,这在每个环境中都是不同的。你们给了我一些非常重要的投入,我应该继续对这个话题进行调查。谢谢!
https://stackoverflow.com/questions/46266756
复制相似问题