使用Crontab定时执行任务

来源:互联网 发布:火绒 windows defender 编辑:程序博客网 时间:2024/05/17 01:06
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分钟执行一次

注:
尽量所有的文件都采用完全路径方式,避免使用相对路径。

0 0
原创粉丝点击