码迷,mamicode.com
首页 > 系统相关 > 详细

crontab定时执行shell脚本失败的原因

时间:2018-08-17 14:57:45      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:code   shell   获取   实施   脚本   记录   用户   cront   失败   

有一段时间不用crontab定时执行任务了,这次趁着项目实施的机会来进一步分析一下crontab定时任务设置时遇到的一些棘手的问题。

crontab -l 查看目前已经设置的crontab信息

crontab -e 编辑定时任务

举例说明

*/1 * * * *  jstack 进程号 >> jstack.log

前五个“*”号分别代表“分钟(0-59) 小时(0-23) 天(1-31) 月(1-12) 星期(0-6, 0表示星期日)

上面例子中表示的每隔一分钟就执行一次jstack并将运行结果输出到jstack.log中。

有小伙伴可能会说,这样执行可能会不成功哦,那么问题来了,为什么会不成功?

如果当前你用的是root用户,而且环境变量中如果配置好了java环境变量,那么执行上面的crontab是没问题的,但是如果你用的其他新建的用户,虽然你可能也配置了java环境变量

但是crontab不会读取你其他用户环境变量中的内容,所以解决方案是把执行命令保存成一个shell脚本,在脚本中显示执行当前用户的环境变量,再运行命令输出

1 #!/bin/bash
2 . /etc/profile
3 . ~/.bash_profile
4 echo 获取java进程号
5 pid=`ps -ef|grep java|awk ‘{print $2}‘`
6 echo ${pid}
7 echo 开始记录jstack信息,并输出到根目录的jstack.log
8 jstack ${pid} >> jstack.log

假设上面这段代码保存到jstack.sh文件,这样再设置crontab的时候直接

*/1 * * * *   /home/test/jstack.sh 

这样就可以啦,观察jstack.log文件的增长情况,这样就避免了使用绝对路径的问题。

crontab定时执行shell脚本失败的原因

标签:code   shell   获取   实施   脚本   记录   用户   cront   失败   

原文地址:https://www.cnblogs.com/stonenn-sweeties/p/9493140.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!