首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >脚本不适用于cronjob

脚本不适用于cronjob
EN

Stack Overflow用户
提问于 2017-09-17 17:14:56
回答 1查看 53关注 0票数 0

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

代码语言:javascript
复制
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。通过手动执行此脚本,它的工作非常完美。

代码语言:javascript
复制
./reindex.sh

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

代码语言:javascript
复制
0    6    *    *    6  cd /locattion/of/the/file; ./reindex.sh

与其在日志文件中获取已编辑的索引(比如手动启动脚本时),我只需要收到一条消息:

代码语言:javascript
复制
nohup: invalid option -- 'X'
Try `nohup --help' for more information

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-19 07:28:00

我找到了解决办法。在.profile文件中是脚本中所需的所有变量。我只需将.profile文件的路径添加到cron作业中,它就工作得很好。

代码语言:javascript
复制
0    6    *    *    6  . $HOME/.profile; cd /locattion/of/the/file; ./reindex.sh

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46266756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档