CentOS7环境下定时任务执行不成功的排查

在CentOS7环境下,编辑/etc/crontab配置了一个定时任务,定时任务的作用就是定时针对某个磁盘使用fio进行读写测试。

在/etc/crontab中的配置如下:

cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

00 * * * * root /usr/bin/bash /root/fiotesting.sh

fiotesting.sh的内容如下:

cat fiotesting.sh 
#!/usr/bin/bash
fio  -filename=/dev/sdk -runtime=45 -time_based -direct=1 -iodepth 64  -thread -rw=randrw  -ioengine=libaio -bs=8k -numjobs=1 -group_reporting -name=mytest  --output=/tmp/8k-randrw-test.log  2>&1 /dev/null

配置完毕之后,手动执行 bash /root/fiotesting.sh是正常的,检测到的结果也符合预期。

但是感觉定时任务并没有生效。
检测crond服务状态也是正常的
从/var/log/cron日志文件中查看,相关的定时任务已经被执行

Nov  4 15:48:01 quantum162 CROND[63570]: (root) CMD (/usr/bin/bash /opt/fiotesting.sh)
Nov  4 15:49:01 quantum162 CROND[63691]: (root) CMD (/usr/bin/bash /opt/fiotesting.sh)
Nov  4 15:50:01 quantum162 CROND[63787]: (root) CMD (/usr/bin/bash /opt/fiotesting.sh)

排查过程:

  1. 手动执行再次确认脚本可以正常执行
  2. 在脚本中增加 data >> /tmp/test 发现会有/tmp/test文件生成,并且每分钟都会有时间戳打印,证明这个脚本确实是被调用了,问题应该出在脚本文件的内容上
  3. 开始以为是重定向出现的问题,将–output=/tmp/8k-randrw-test.log 和 2>&1 /dev/null 逐渐删除,还是没有生效,这样就排除了重定向的原因
  4. 最后怀疑可能是系统找不到fio命令。因为当手动执行的时候,是把/urs/local/bin添加到了PATH里面,但是系统调用的时候不一定知道fio的位置,这里将脚本重新修改了一下,指定了fio的全路径信息 /usr/local/bin/fio

修改后的 fiotesting.sh的内容如下:

cat fiotesting.sh 
#!/usr/bin/bash
/usr/local/bin/fio  -filename=/dev/sdk -runtime=45 -time_based -direct=1 -iodepth 64  -thread -rw=randrw  -ioengine=libaio -bs=8k -numjobs=1 -group_reporting -name=mytest  --output=/tmp/8k-randrw-test.log  2>&1 /dev/null

这个时候定时任务就能够按照预期执行了。

这个主要是记录一下针对定时任务不生效的排查过程,供有需要的同学参考一下。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值