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

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

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

猜你喜欢

转载自blog.csdn.net/haiqinma/article/details/127691112
今日推荐