1
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就不再执行任何命令了.

7.参考文章

参考文章1

参考文章2


geekzhou
56 声望5 粉丝

Http://www.GeekZhou.com