crontab是linux运维必须掌握的技能,虽然crontab好学,但是在实际书写过程中也会遇到各种坑:

第一坑:比如写一个命令每天晚上12点执行,可能新手在书写时会出现两种错误情况:

1、* 00 * * * CMD

这个错误的原因是没有指定分钟位的具体时间,会导致每分钟都执行。

2、00 12 * * * CMD

这个错误的原因是不了解定时任务在书写小时是按照24小时制来写的,晚上12点应为00,如果写12是中午12点的意思。

第二坑:比如在写定时备份文件的任务时,为了避免文件名重复,往往会用到date +%F,但是由于我们忽略了%在定时任务crontab的配置文件是有特殊用法的,表示换行,所以往往我们写的定时任务并没有被真正执行,解决这个问题的办法是将%F前面的%百分号用\转义符去掉在crontab配置文件中的特殊意义。

第三坑:在写命令时,没有用命令的绝对路径,会导致定时任务找不到该命令,因为crontab默认只能找到/usr/bin和/bin下的命令,其他路径的命令不能直接找到,需要加绝对路径才能真正被使用。

第四坑:在定时任务书写时,没有将定时任务的输出结果定向到一个文件或空/dev/null会导致两种情况的发生:1、系统邮件服务开启了,会导致postfix(C6)不断给root发送邮件,给管理员造成困扰;2、如果邮件服务没有开启,会不断增加邮件队列在/var/spool/postfix/maildrop/目录下创建小于4k的小文件,大量占用inode,最终将磁盘的inode用光导致虽然block没满,但是inode满了而存储不了真正需要的数据。