生命不息
折腾不止

centos中 crontab(计时器)用法详解

关于 crontab

crontab 命令常见于 Unix 和类 Unix 的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“ crontab ”文件中,以供之后读取和执行。该词来源于希腊语 chronos( χρ ? νο ?) ,原意是时间。
通常, crontab 储存的指令被守护进程激活, crond 常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为 cron jobs 。

 

安装 crontab (现在大部分系统其实都已经预装了) :

[[email protected] ~]# yum install vixie-cron
[[email protected] ~]# yum install crontabs

 

说明:
vixie-cron 软件包是 cron 的主程序;
crontabs 软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

cron 是 linux 的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

/sbin/service crond start # 启动服务 
/sbin/service crond stop # 关闭服务 
/sbin/service crond restart # 重启服务 
/sbin/service crond reload # 重新载入配置 

 

查看 crontab 服务状态:

service crond status

 

手动启动 crontab 服务:

service crond start

 

其他命令:

 复制代码
# 查看 crontab 服务是否已设置为开机启动,执行命令: 
ntsysv

# 加入开机自动启动 :
chkconfig --level 35 crond on

# 列出 crontab 文件 
crontab -l

# 编辑 crontab 文件 
crontab -e

# 删除 crontab 文件 
$ crontab -r

# 恢复丢失的 crontab 文件 
# 假设你在自己的 $HOME 目录下还有一个备份,那么可以将其拷贝到 /var/spool/cron/<username> ,其中 <username > 是用户名 
# 或者使用如下命令其中, <filename> 是你在 $HOME 目录中副本的文件名 
crontab <filename>
 复制代码

 

日志文件: /var/log/cron*   (特别注意,如果你不知道 crontab 是否运行了,可以直接查这个日志)

 

补充:

1 、 crontab 相关命令

功能说明: 设置计时器。

语  法: crontab [-u < 用户名称 >][ 配置文件 ] 或 crontab [-u < 用户名称 >][-elr]

补充说明: cron 是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使用计时器的功能。

配置文件格式: Minute Hour Day Month DayOFWeek Command

参  数:
-e  编辑该用户的计时器设置。
-l  列出该用户的计时器设置。
-r  删除该用户的计时器设置。
-u< 用户名称 >  指定要设定计时器的用户名称。

 

2 、 crontab 配置文件格式

  基本格式 :
*       *   *     *     *    command
分   时  日  月  周   命令

第 1 列表示分钟 1 ~ 59 每分钟用 * 或者 */1 表示
第 2 列表示小时 1 ~ 23 ( 0 表示 0 点)
第 3 列表示日期 1 ~ 31
第 4 列表示月份 1 ~ 12
第 5 列标识号星期 0 ~ 6 ( 0 表示星期天)
第 6 列要运行的命令

 

crontab 文件的一些例子:

# 每晚的 21:30  重启 apache
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
# 每月 1 、 10 、 22 日的 4 : 45 重启 apache
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
# 每周六、周日的 1 : 10 重启 apache
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
# 每天 18 : 00 至 23 : 00 之间每隔 30 分钟重启 apache
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
# 每星期六的 11 : 00 pm 重启 apache
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
# 晚上 11 点到早上 7 点之间,每隔一小时重启 apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
# 每一小时重启 apache
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
# 每月的 4 号与每周一到周三的 11 点重启 apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
# 一月一号的 4 点重启 apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
# 每半小时同步一下时间 
*/30 * * * * /usr/sbin/ntpdate 210.72.145.44

 

3 、其他任务调度

cron 默认配置了调度任务,分别为: hourly 、 daily 、 weekly 、 mouthly ,默认配置文件为 /etc/anacrontab

将需要执行的脚本放到相应的目录下即可,目录分别为:

/etc/cron.hourly

/etc/cron.daily

/etc/cron.weekly

/ect/cron.mouthly

 

 

参考 :

[1] crontab. 百度百科 .http://baike.baidu.com/view/1229061.htm

[2]  非主流空间 .centos 中 crontab -e 用法详解 .http://hi.baidu.com/ldbf/blog/item/b4dc9e02f23dcb124bfb51b8.html

[3]  鳥哥的 Linux 私房菜 . 例行性工作排程 (crontab).http://linux.vbird.org/linux_basic/0430cron.php

[4]   DELL-Richard Li.Linux 下 cron 调度的几种实现方式比较 .http://zh.community.dell.com/techcenter/f/21/t/1185.aspx

赞(0)
未经允许不得转载:91云(91yun.co) » centos中 crontab(计时器)用法详解

留言 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址