crontab是什么
crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。「crontab」一词来源于希腊语chronos(χρνο),原意是时间.
而crond是Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,操作系统默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
环境:CentOS 7.0 64位
1.crontab文件的位置.
所有用户定义的crontab文件都被保存在/var/spool/cron目录中,文件名与用户名保持一致.例如:
用户「root」的crontab文件位于:/var/spool/cron/root
用户「zhou」的crontab文件位于:/var/spool/cron/zhou
2.黑名单&白名单的文件位置
名称 | 位置 | 作用 |
---|---|---|
白名单 | /etc/cron.allow | 将可以使用 crontab 的帐号写入其中,若不在这个文件内的使用者则不可使用 crontab; |
黑名单 | /etc/cron.deny | 将不可以使用 crontab 的帐号写入其中,若未记录到这个文件当中的使用者,就可以使用 crontab . |
白名单的优先级高于黑名单,但是系统默认保留的是黑名单.可以将某些用户写入/etc/cron.deny中,一个帐号一行,这样这些用户就不能使用crontab了.
3.crontab配置文件的语法
配置文件中的每一行具有六个栏位,这六个栏位的意义为:
意义 | 分钟 | 小时 | 日期 | 月份 | 星期 | 命令 |
---|---|---|---|---|---|---|
范围 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7 | command |
其中星期取值为0和7时均代表星期日.
前五栏除了可以取上表中的这些值外,还可以取下面这些特殊参数:
特殊字符 | 代表的意义 |
---|
* |代表任何时刻均可执行. , |代表分隔时段,例如要在3:00和6:00两个时刻执行命令:```0 3,6 * * * command``` - |代表范围,例如要在8:20,9:20,10:20三个时刻执行命令:```20 8-10 * * * command``` /n |代表间隔,例如每10分钟执行一次命令:```*/10 * * * * command```
注意时间与星期不能同时设置,例如下面就是一个错误的写法:
30 12 11 9 5 command
此时,系统可能会判定在每周五执行该命令,也可能判定在每年的9月11日执行该命令,而非在9月11日且为周五才去执行命令.
crond服务的监控间隔为1分钟,因此cron会每分钟去读取一次/etc/crontab 与 /var/spool/cron 里面的数据内容.只要你编辑完 /etc/crontab 这个文件,并且将他储存之后,那么 cron 的配置就会自动的运行了!
4.crontab命令
命令 | 含义 |
---|---|
crontab file |
crontab opt 就是将当前目录下的opt文件导入当前用户的crontab配置文件中. |
crontab -l |
查看当前用户的crontab配置文件内容. |
crontab -e |
编辑当前用户的crontab配置文件内容. |
crontab -r |
编辑当前用户的crontab配置文件内容. |
5.crontab服务
命令 | 含义 |
---|---|
service crond status |
查看crontab服务状态 |
service crond start |
启动crontab服务 |
service crond stop |
关闭crontab服务 |
service crond restart |
重启crontab服务 |
service crond reload |
重载crontab服务配置 |
6.?
在sample1文件中写入如下内容:
* * * * * date > sample2
执行命令: crontab sample1
这样就配置了一个最简单的crontab,每分钟执行一次命令.
用tail -f sample2
命令查看命令的执行情况:
可以看到crontab已经启动了,每分钟的00秒自动执行命令.
输入命令crontab -r
后,crontab就不再执行任何命令了.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。