当前位置: 技术问答>linux和unix
为什么cron定时作业无效
来源: 互联网 发布时间:2016-06-02
本文导语: 有一个用户opt(/home/opt),在目录(/home/opt/shell)下有两个shell文件a和b 编辑crontab -e结果: 0 0 * * * /home/opt/shell/a 0 0 * * 1 /home/opt/shell/b 一直正常 现在在shell目录下添加另一个shell文件c 编辑crontab -e结果: 0 0 *...
有一个用户opt(/home/opt),在目录(/home/opt/shell)下有两个shell文件a和b
编辑crontab -e结果:
0 0 * * * /home/opt/shell/a
0 0 * * 1 /home/opt/shell/b
一直正常
现在在shell目录下添加另一个shell文件c
编辑crontab -e结果:
0 0 * * * /home/opt/shell/a
0 0 * * 1 /home/opt/shell/b
0 0 * * * /home/opt/shell/c
其中a和b还是可以正常执行,只有新添加的c脚本无法执行
手动运行/home/opt/shell/c是可以的
昨天一直没有研究出来,所以想请问大家我的问题是出在哪里了?
谢谢
编辑crontab -e结果:
0 0 * * * /home/opt/shell/a
0 0 * * 1 /home/opt/shell/b
一直正常
现在在shell目录下添加另一个shell文件c
编辑crontab -e结果:
0 0 * * * /home/opt/shell/a
0 0 * * 1 /home/opt/shell/b
0 0 * * * /home/opt/shell/c
其中a和b还是可以正常执行,只有新添加的c脚本无法执行
手动运行/home/opt/shell/c是可以的
昨天一直没有研究出来,所以想请问大家我的问题是出在哪里了?
谢谢
|
是不是脚本中使用的什么环境变量,crontab执行的时候能带入的环境很少,如果用到了什么环境变量,很容易造成crontab不能正常启动,在脚本中加载一下环境变量应该就可以了,比如source $HOME/.bash_profile
另外楼主为什么不这么写呢,0 0 * * 1 /bin/sh /home/opt/shell/b
另外楼主为什么不这么写呢,0 0 * * 1 /bin/sh /home/opt/shell/b
|
我在实际测试过程中就发现,如果是java或使用到了数据库之类的东西,我们在$HOME/.bash_profile都会添加环境,使用crontab启动的时候,如果不在脚本中重新加载环境,程序是启不来的,我们这个项目就碰到了这个问题,哪怕是我们在$HOME/.bash_profile中声明一个类似于WORK_PATH之类的东西,使用crontab启动程序的时候,如果不加载环境,程序就会报错,特别是在脚本当中使用环境
|
脚本只有echo "test"
你怎么知道它没有执行啊
你的问题多半是环境的问题
比较好的解决方法是不要直接执行,用
su - -c 脚本 用户名
来执行它,这样环境就和你平时一样了
这个需要root来设置,可以用root来执行后面的用户名不需要加
你怎么知道它没有执行啊
你的问题多半是环境的问题
比较好的解决方法是不要直接执行,用
su - -c 脚本 用户名
来执行它,这样环境就和你平时一样了
这个需要root来设置,可以用root来执行后面的用户名不需要加
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。