crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。
cron 系统调度进程。 可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业。crontab命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个crontab文件来保存调度信息。系统管理员可以通过cron.deny 和 cron.allow 这两个文件来禁止或允许用户拥有自己的crontab文件。
在运维中运用的很多,可以定时执行一些shell,python,perl脚本来监控系统的变化,我一般是运用于执行一些python脚本,检查服务器上的文件、用户等变化情况,然后把运行结果通过邮箱发送到自己的邮箱上,可省去很大一部分的工作量。
1、crontab文件一般位于/etc/下,这里面存放系统运行的的调度程序。
2、每个用户都会生成一个自动生成一个自己的crontab文件,一般位于/var/spool/cron目录下,每个用户都可以运行自己的定时任务,相互之间不冲突。
命令:
-crontab -r 删除当前用户的crontab文件 ,如果切换到test用户下,会把test用户的定时任务全删除了
-crontab -e 创建定时任务,操作和一样,每一行是一条指令
-crontab -l 查看当期用户的定时任务
一般的格式为:
0 9 * * * python /var/log/watch.py
a b c d e python /var/log/watch.py
前面一部分指明执行的时间,后面一部分指明定时执行的命令
第一列a 分钟: 1——59
第二列b 小时: 1——23(0表示子夜)
第三列c 日 : 1——31
第四列d 月 : 1——12
第五列 星期: 星期0——6(0表示星期天,1表示星期一、以此类推)
如果没有指明,就用*代替,那么这就会表示,每分/时/日/月/周。。都要执行
如果a没有指明,是用*表示,那么表示每分钟都要执行
如果b没有指明,是用*表示,那么表示每个小时都要执行
如果c没有指明,是用*表示,那么表示每天都要执行
如果d没有指明,是用*表示,那么表示每月都要执行
如果e没有指明,是用*表示,那么表示每周都要执行
具体例子:
15,30,45,59 * * * * 每个小时的15分,30分,45分,59分各执行一次
0 */2 * * * date 每两个小时一次
0 11 4 * mon-wed date 每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
/5 * * * 每5分钟执行一次
注:
尽量所有的文件都采用完全路径方式,避免使用相对路径。