Crontab介绍
一、Crontab是什么
我总是喜欢将一些特别专业的词汇翻译成比较浅显易懂的词语,可能并不是很准确,但是我觉得更便于理解。
按照前人的解释,cron是系统主要的调度进程,可以在非人工干预的情况下运行作业。crontab命令允许用户提交、编辑或删除相应的作业。简单来说,当我们需要让系统执行一个定时任务时,我们就会用到它,比如定时重启tomcat,或者定时调用一个jar包来执行某项功能等。
其他详细、专业的介绍,请参考这里。
二、Crontab设置
1、查看当前用户的定时任务
[root@localhost ~]$ crontab -l
如果当前用户有定时任务,则会列出该用crontab文件里面的定时任务格式户的定时任务;如果没有,则会显示no crontab for root。
2、编辑当前用户的定时任务
[root@localhost ~]$ crontab -e
执行该条命令之后,即可在编辑状态下编写所要执行定时任务的命令。
如当我编写以下命令并保存之后,30 03 * * * /usr/local/tomcat/apache-tomcat-6.0.26/restart.sh
成功则出现:crontab: installing new crontab。
3、删除当前用户的定时任务
[root@localhost ~]$ crontab -r
4、cron服务的启动、关闭
cron不会自动启动,需要通过以下命令来启动、关闭这个服务:
crond start //启动服务
crond stop //关闭服务
crond restart //重启服务
crond reload //重新载入配置
5、crontab文件里面的定时任务格式
59 23 * * * /home/oracle/scripts/alert_log_archive.sh >/dev/null 2>&1
crontab 文件中每个条目中各个域的意义和格式:
第一列 分钟:1——59
第二列 小时:1——23(0表示子夜)
第三列 日 :1——31
第四列 月 :1——12
第五列 星期:星期0——6(0表示星期天,1表示星期一、以此类推)
第六列 要运行的命令
我们暂且用C1、C2、C3、C4、C5、C6代表这六列,前面五列通过组合方式来决定执行脚本的频率,最小频率为每分钟执行一次,其中Cn可以用*、*/n、T1-T2、a,b,c四种形式来表示:
当 C1 为 * 时表示每分钟都要执行脚本,C2 为 * 时表示每小时都要执行程式,依次类推.....
当 C1 为 T1-T2 时表示从第 T1 分钟到第 T2 分钟这段时间内要执行,C2 为 T1-T2 时表示从第 T1 到第 T2 小时都要执行,依次类推....
当 C1 为 */n 时表示每 n 分钟的时间间隔执行一次,C2 为 */n 表示每隔n小时的间隔执行一次,依次类推.....
当 C1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,C2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,依次类推....
下面列举几个例子供大家参考
1: 59 23 * * * /home/oracle/scripts/alert_log_archive.sh >/dev/null 2>&1
表示每天23点59分执行脚本/home/oracle/scripts/alert_log_archive.sh
2: */5 * * * * /home/oracle/scripts/monitoring_alert_log.sh >/dev/null 2>&1
表示每5分钟执行一次脚本/home/oracle/scripts/monitoring_alert_log.sh
3: 0 20 * * 1-5 mail -s "**********" kerry@domain.name < /tmp/maildata
周一到周五每天下午 20:00 寄一封信给 kerry@domain.name