近几天项目里需要用到一个定时任务,负责给一些用户定时发送提醒邮件。毋庸置疑第一时间我们就想到了使用Linux系统里自带的定时任务。因为之前的工作对Linux接触的比较少,我对定时任务是完全没有了解。这篇博客也不适合用来学习定时器只是希望有缘人遇到这种小问题不需要在卡顿!
第一个遇到的问题就是Linux定时任务在哪里可以配置:
在Linux里有这样几条命令分别是
crontab -u root -l 查看该用户的定时任务
crontab -u root -e 编辑该用户的定时任务
crontab -u root -r 删除该用户的定时任务(慎重使用,删了就没了!Linux可没有回收站)
crontab -u root -i 删出时做出询问(感觉没啥意义);
这里说到删除,在Linux中删除时rm命令是会直接销毁二进制文件的。所以一经删除,毁天灭地;
当然Linux没有回收站,就会有类似的文件夹,文件夹的名称叫做trash,对他感兴趣的同学自行挖掘吧;
言归正传,从上面的命令不难看出想要修改定时器,不一定必须知道要修改的文件在哪里,只需要使用上面的命令就可以直接使用vi编辑器打开文件;我可是找了好长时间的定时器文件,我表示定时器文件真的藏得很深,所以同学们要不是深究Linux系统,我认为会用命令就可以了!
第二个问题就是要在那里怎么配置
这个地方有一个小坑,主要还是脑子转弯太笨了;应该很轻松的想到,却耗费了不少时间,所以也给大家说说!配置格式:* * * * * command;
这里先说一下前面的五个*分别代表什么,
(如果使用 num/* 表示每隔对应的单位,如果只写num表示在上一个单位里第几个本单位执行,eg:在分钟有个数字30表示每个小时的30分执行,这里是开始时间,脚本执行时间不定),
第一个是分钟数(num/*每隔几分,num表示在一小时的第几分钟开始执行,取值区间0-59),
第二个是小时(num/*每隔几小时,num表示在一天的第几小时开始执行,取值区间0-23),
第三个是日期(num/*每隔几天,num表示在一个月的几号开始执行,取值区间0-31),
第四个是月份(与上面一样,实在不想写了,取值区间1-12),
第五个是星期(这里要注意,是星期不是年哦,取值区间0-6 0代表周日,往后类推),
这里值得注意的是写法:num/*表示每隔多久,1-6表示区间如果用在第一个表示每小时的第一到第六分钟每分钟执行一次;
最后就是后面的command,不难理解这里写的是命令;千万不要直接写文件名哦,如果是执行php文件要在前面添加php /path才行;