首先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中。
   
    找到这个文件有问题的地方修改掉,就好了。
   
    这里面说明了几个问题,大公司的机器底层软件比较混乱,程序是你灌我也灌,系统参数你改我也改,这个是由于产品上线频率和打补丁的频率很快,造成机器基础环境不统一。这里面最好有一个一键还原的意味在里面最好