crontab 入门

Posted yuyifeiyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了crontab 入门相关的知识,希望对你有一定的参考价值。

使用前需要了解的:

1. crontab配置的命令需要crond守护进程的支持,用ps aux | grep crond命令检查crond是否运行,如果没安装就执行:yum install -y crons

2. crontab的所有编辑、查看、命令的运行信息、都可以在/var/log/cron日志文件中查看到

3. 用户通过crontab -e 编辑的定时任务,存放在 /var/spool/cron/ 目录下

4. crond守护进程每分钟去/etc/cron.d里面搜索配置文件,里面有一个0hourly文件,里面写了01 * * * * root run-parts /etc/cron.hourly。是每隔1小时去运行一次/etc/cron.hourly目录,该目录下面有一个0anacron文件,这样0anacron文件就能每小时运行一次。0anacron按照/etc/anacrontab文件里面的配置,将当前时间与/var/spool/anacron目录下面的文件里面的时间戳作对比,如果需要则去运行/etc/anacrontab对应的条目。这也是为什么/etc/anacrontab文件里面只定义了cron.daily、cron.weekly与cron.monthly,而没有定义cron.hourly,因为cron.daily、cron.weekly与cron.monthly其实是由cron.hourly调起来的。

 

配置目录结构:

/etc/cron.d               是系统自动定期需要做的任务,但是又不是按小时,按天,按星期,按月来执行的,那么就放在这个目录下面。如果是按小时,按天,按星期,按月的来执行的话,则可以放到相应的目录下面去。
/etc/cron.hourly       是每个小时执行一次的任务
/etc/cron.daily         是每天执行一次的任务
/etc/cron.weekly      是每个星期执行一次的任务
/etc/cron.monthly    是每月执行一次的任务

/etc/crontab            前四行是用来配置crond任务运行的环境变量。

第一行SHELL变量指定了系统要使用哪个shell,一般是bash。
第二行PATH变量指定了系统执行 命令的路径。
第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务 执行信息给用户

第四行HOME变量如果被忽略,cron 会使用调用者(用户)的家目录替代。

 

 

crontab 程序常用参数:

crontab file //用指定文件代替目前的crontab
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除某个用户的cron服务(所有服务)
crontab -e //编辑某个用户的cron服务

比如查看root的cron设置:crontab -u root -l
root想删除fred的cron设置: crontab -u fred -r

 

如何配置时间操作符:

星号 (*) : 此操作符为字段指定所有可用的值。举个例子,在小时字段中,一个星号等同于每个小时;在月份字段中,一个星号则等同于每月。
逗号 (,) : 这个操作符指定了一个包含多个值的列表,例如:1,5,10,15,20,25.
横杠 (-) : 此操作符指定了一个值的范围,例如:5-15 ,等同于使用逗号操作符键入的 5,6,7,8,9,…,13,14,15。
分隔符 (/) : 此操作符指定了一个步进值,例如: 0-23/ 可以用于小时字段来指定某个命令每小时被执行一次。步进值也可以跟在星号操作符后边,如果你希望命令行每 2 小时执行一次,则可以使用 */2。

crontab 配置示例:

### 每隔 5 分钟运行一次 backupscript 脚本 ##
*/5 * * * * /root/backupscript.sh

### 每天的凌晨 1 点运行 backupscript 脚本 ##
0 1 * * * /root/backupscript.sh

### 每月的第一个凌晨 3:15 运行 backupscript 脚本 ##
15 3 1 * * /root/backupscript.sh

30 21 * * * /usr/local/etc/rc.d/lighttpd restart
### 上面的例子表示每晚的21:30重啟lighttpd 。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
### 上面的例子表示每月1、10、22日的4 : 45重啟lighttpd 。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
### 上面的例子表示每周六、周日的1 : 10重啟lighttpd 。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
### 上面的例子表示在每天18 : 00至23 : 00之間每隔30分鐘重啟lighttpd 。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
### 上面的例子表示每星期六的11 : 00 pm重啟lighttpd 。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
### 每一小時重啟lighttpd

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
### 晚上11點到早上7點之間,每隔一小時重啟lighttpd

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
### 每月的4號與每周一到周三的11點重啟lighttpd

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
### 一月一號的4點重啟lighttpd

 

 

使用特殊符号:

@reboot 在每次启动时运行一次
@yearly 每年运行一次,等同于 “0 0 1 1 *”.
@annually (同 @yearly)
@monthly 每月运行一次, 等同于 “0 0 1 * *”.
@weekly 每周运行一次, 等同于 “0 0 * * 0”.
@daily 每天运行一次, 等同于 “0 0 * * *”.
@midnight (同 @daily)
@hourly 每小时运行一次, 等同于 “0 * * * *”.

 



































以上是关于crontab 入门的主要内容,如果未能解决你的问题,请参考以下文章

Crontab定时运行python程序

Linux计划任务,CronTab用法详解

八定时任务调度

八定时任务调度

Crontab 让linux定时执行shell脚本

定时引爆之crontab