本文共 1686 字,大约阅读时间需要 5 分钟。
首先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中。 找到这个文件有问题的地方修改掉,就好了。 这里面说明了几个问题,大公司的机器底层软件比较混乱,程序是你灌我也灌,系统参数你改我也改,这个是由于产品上线频率和打补丁的频率很快,造成机器基础环境不统一。这里面最好有一个一键还原的意味在里面最好
本文转自guoli0813 51CTO博客,原文链接:http://blog.51cto.com/guoli0813/405163,如需转载请自行联系原作者