crontab计划任务

linux 系统中如果我们的任务需要在特定的时间完成,我们可以设置计划任务。能够完成这种功能的服务有crontab、at、batch、anacron。

crontab 功能强大,周而复始的执行任务。使用它的前提是系统必须是持续运行状态,且你服务crond处于开启状态,如果没有开启,请使用:
下面命令:

[code]service crond start  ----------------启动服务
chkconfig crond on ----------------保证下次启动时随机启动[/code]

crontab可以精确到分,具体使用格式是:
minute hour day month dayofweek  command
  • minute  分钟 从0到59之间的整数
  • hour 小时 从0到23之间的整数
  • day 日期 从1到31之间的整数,如果指定了月份,该项必须是那个月的有效日期
  • month 月份 从1到12之间的整数,或是英语简写(jan、feb..)
  • dayofweek 星期 从0到7之间的整数,0或7代表星期日,或是星期的英文简写如sun、mon
  • command 命令 可以是系统命令也可以是定义的脚本,建议写命令是写绝对路径如/bin/ls
创建计划任务:可以使用crontab -e,如果需要为某个用户创建使用contab -u zhangsan -e,默认使用vi编辑器,创建好后保存,这样就会在/var/spool/cron/下面看到一个以用户名命名的文件,这个就是你创建的任务。
几个例子:
每1分钟执行一次command
* * * * * command
每小时的第3和第15分钟执行
3,15 * * * * command
在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * command每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * command
每个星期一的上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 command
每个星期一的上午8点到18每隔两个小时(8,10,12,14, 16 ,18)执行
00 8-18/2 * * 1 command
在上面的例子中各特殊符号的含义:
* 任务有效值
– 整数范围,如8-11意味着8, 9, 10, 11
, 一个系列值指定的一个列表, 如 3,5,7,9
/ 间隔频率,如果0-6/2 相当于0,2,4,6

查看计划任务:使用 crontab -l 可以查看当前登录用户的计划任务,如果想查看指定用户的计划任务使用 contab -u user -l

删除计划任务使用 crontab -r 可以删除当前登录用户的计划任务,如果想删除指定用户的计划任务使用 contab -u user -r
预设任务:系统中有一些预设的计划任务,可以通过cat /etc/crontab来查看它们的定义,建议不要随便改动这里面的东西
使用控制:在/etc/下面有两个文件cron.allow和cron.deny(如果没有cron.allow可以自己建一个),这两个文件的格式都是每一行一个用户,且不允许有空格,如果文件被修改,不需要重启服务。
无论使用控制文件中的规定如何,root总是可以使用crontab
如果cron.allow文件存在,只有其中列出的用户可以使用crontab,并且cron.deny
如果cron.allow不文件存在,所有在cron.deny中列出的用户都被禁止使用crontab

at 有时我们只想让任务执行一次而不是周而复始的执行,这时可以选择at。
-f 指定从文件中读取,如果没有指定该参数,将从stdin中读取
-v 显示运行任务的时间
-m 向用户发邮件,即使没有stdout

at -f mycron.sh 10pm tomorrow 明天晚上10:00运行我的脚本mycron.sh
使用atq显示任务,用atrm删除任务

[code] atq[/code]

Wed Jul 11 02:00:00 2007 a yanqing
Sat Jul 14 02:00:00 2007 a yanqing
Sun Jul 8 22:00:00 2007 a yanqing
Tue Jul 10 02:00:00 2007 a yanqing

[code]atrm 16 14 15[/code]

batch 只有系统负载在低于0.8时才运行(不常用)

anacron 与cron相似,不过它不要求系统的持续运行。它可以 用来运行通常用cron运行的每日,每周和每月的任务。使用前确保你的服务已经启动,如果没有启动使用
service anacron start
chkconfig anacron on
格式为:
period delay job-identifier command
  • period 命令执行的频率(天数)
  • delay 延迟时间(分钟)
  • job-identifier 任务描述,用于anacron的消息中,并作为任务时间戳文件的名称,只能包括非空白的字符(斜线除外)
  • command 要执行的命令
对于每项任务, anacron 先判定该任务是否已在配置文件的 period 字段中指定的期间内被执行了。如果它在给定期间内还没有被执行, anacron 会等待 delay 字段中指定的分钟数,然后执行command 字段中指定的命令;
任务完成后, anacron 在 /var/spool/anacron 目录内的时间戳文件中记录日期;这里只记录日期,无具体时间,而且 job-identifier 的数值被用做时间控制文件的名称。

CentOS安装crontab:

[code]yum install vixie-cron</span>
yum install crontabs[/code]

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

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注