RHEL7中的CRON简介
本文最后更新于:July 10, 2019 am
RHEL7中的CRON功能以及使用方式简介。
1、cron简介
crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
注意Cron在设置定时任务的时候,最多只能精确到分钟而无法精确到秒。
Linux下的任务调度分为两类,系统任务调度和用户任务调度。
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。**/etc/crontab文件是系统任务调度的配置文件。**
用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。
2、cron安装
1 |
|
1 |
|
3、cron相关文件
我们先看一下在/etc
目录下和cron相关的文件主要有哪些,接下来我们逐个对其进行分析。
3.1 /etc/crontab
我们cat一下/etc/crontab
这个文件看看里面的内容
1 |
|
- MAILTO=root:这个项目是说,当
/etc/crontab
这个文件中的例行性工作的指令发生错误时,或者是该工作的执行结果有STDOUT/STDERR时,默认是由系统直接寄发一封mail给root。由于root 并无法在客户端中以POP3之类的协议接收邮件,因此你也可以改成自己的邮箱。 - PATH:这里就是输入执行文件的搜寻路径,一般使用默认的路径即可
- 分-时-日-月-周-执行用户-执行指令:七个字段的设定,这个
/etc/crontab
里面可以设定的基本语法就在这个文件里面,当我们忘了格式的时候可以cat这个文件看一下,需要注意的是不填写的字段需要使用星号*
来占位,同一个字段要写多个数字的时候用英文逗号隔开;执行用户方面,系统默认是以root的身份来进行的。
这里需要注意的是,在设定时间的时候,不能同时使用周和日月,即我们只能设定该任务在周几执行或者是几月几日执行,不能同时满足这两个条件,否则系统可能会无法正确识别。
3.2 /etc/cron.allow和/etc/cron.deny
/etc/cron.allow
和/etc/cron.deny
这两个文件主要是对使用cron
的用户进行管理。
这里可以分为四种情况。
- 如果这两个文件都不存在,那么就只有
root
用户能够使用crontab
命令 - 如果只存在
cron.allow
,那么就只有cron.allow
上面的用户能使用crontab
命令,如果root
用户也不在里面,则root用户也不能使用crontab
- 如果只存在
cron.deny
,那么就只有cron.deny
上面的用户不能使用crontab
命令 - 如果两个文件都存在,则列在
cron.allow
文件中而且没有列在cron.deny
中的用户可以使用crontab
,如果两个文件中都有同一个用户,以cron.allow文件里面是否有该用户为准,如果cron.allow
中有该用户,则可以使用crontab
命令
crontab
命令我们将在本文后面讲解
3.3 /etc/cron.d
/etc/cron.d/
这个目录用来存放任何要执行的crontab
文件或脚本
3.4./etc/cron.*ly/
cron.monthly/
, cron.weekly/
, cron.daily/
, cron.hourly/
这四个目录下面存放的文件会在对应的时间内被执行,如 cron.hourly/
里面的文件会在每个小时被执行一次,需要注意的是,这里放置的是直接执行的脚本文件,而不是上述的crontab格式的定时任务描述文件。
3.5 /var/spool/cron/
/var/spool/cron/
目录下存放着每个用户自己的crontab
文件。
4、crontab命令
语法格式:crontab [参数]
常用参数:
参数 | 含义 |
---|---|
-e | 编辑该用户的计时器设置 |
-l | 列出该用户的计时器设置 |
-r | 删除该用户的计时器设置 |
-u | 指定要设定计时器的用户名称 |
–help | 显示帮助信息 |
参考实例
1 |
|
需要注意的是,和
/etc/crontab
文件不同,使用crontab
命令进入到编辑模式的时候不需要再加执行用户这一参数,默认是使用当前的登录账户,如果需要指定,使用-u
参数即可。
此外,crontab中还有几种简化的写法需要我们了解一下
1 |
|
需要注意的是,crontab -r
是删除该用户的所有定时任务。
5、小结
个人化的行为使用
crontab-e
:如果你是依据个人需求来建立的例行工作排程,建议直接使用
crontab-e
。这样也能保障你的指令行为不会被大家看到(/etc/crontab
是大家都能读取的);系统维护管理使用
vim/etc/crontab
:如果这个例行工作排程是系统的重要工作,为了让自己管理方便,同时容易追踪,建议直接写入
/etc/crontab
较佳!自己开发软件使用
vim/etc/cron.d/newfile
:如果是想要自己开发软件,那当然最好就是使用全新的配置文件,并且放置于
/etc/cron.d/
目录内即可。固定每小时、每日、每周、每天执行的特别工作:
如果与系统维护有关,还是建议放置到
/etc/crontab
中来集中管理较好。如果想要偷懒,或者是一定要再某个周期内进行的任务,也可以放置到上面谈到的几个目录中,直接写入指令即可!