首先QA部门反馈过来有70台机器在work用户下周期性定时任务无法执行,其他的400台服务器执行此命令没有问题,
crontab -e中写入:
44 */4 * * * `source /etc/profile;source /home/work/.bash_profile;/home/work/staf/extbin/atd/atdupdate`
首先我们从crontab入手,把此命令拿出来单独执行,没有问题。
第二:我把他得日志都打印到/home/work/xiaowei.log中,如下所示:
44 */4 * * * `source /etc/profile;source /home/work/.bash_profile;/home/work/staf/extbin/atd/atdupdate >>/home/work/xiaowei.log 2>&1`
这样暴露出几台机器因为/home/work空间不足写入不进文件中。查看命令:
[root@db-testing-ps1110.db01.alixi.com /]# du -sh /home/work #s是汇总,h是以更优雅的方式显示
459G /home/work
[root@db-testing-ps1110.db01.alixi.com /]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d0p2 8.7G 4.0G 4.7G 46% /
/dev/cciss/c0d0p3 462G 460G 2.2G 100% /home
这几台问题解决后,我们就开始看第二个问题:/home/work/xiaowei.log为空。
我们确认两点:
第一:crond进程是否存在
[root@db-testing-ps1110.db01.alixi.com /]# service crond status
crond (pid 16924 2416) is running...
第二:crontab中命令是否执行
[root@db-testing-ps1110.db01.alixi.com /]# tail /var/log/cron
Oct 13 14:09:01 db-testing-ps1110 crond[16712]: (work) CMD (`source /etc/profile;/home/work/staf/extbin/atd/atdupdate >>/home/work/xiaowei.log 2>&1`)
没有打日志出来,我们进行的操作是service crond restart 和service syslog restart
这样我们又清理出一批机器出来。
第三:确认命令问题:我们执行了一条最简单的命令:
* * * * * mail -s "aaaaa" yangguoli@alixi.com </etc/passwd
这样又把一批crontab本身有问题的筛选出来了。
第四:命令的问题,我们通过分命令执行的方式:
首先测试他的基本命令:/home/work/staf/extbin/atd/atdupdate能够打印出日志,然后测试source /etc/profile /home/work/staf/extbin/atd/atdupdate 也能打印出日志,但是把命令写全就打印不出日志了,说明问题出在source /home/work/.bash_profile中。
找到这个文件有问题的地方修改掉,就好了。
这里面说明了几个问题,大公司的机器底层软件比较混乱,程序是你灌我也灌,系统参数你改我也改,这个是由于产品上线频率和打补丁的频率很快,造成机器基础环境不统一。这里面最好有一个一键还原的意味在里面最好
crontab排查一例
原创
©著作权归作者所有:来自51CTO博客作者guoli0813的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:2011年展望

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
简单mysql数据库备份一例及crontab说明
测试的是内部一论坛数据库#!/bin/bash######################## ## mysql backup script
mysql crontab shell backup -
Protobuf一例客户端 ide 数据同步 perl 微信