注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

牧笔临风

己有能,勿自私!

 
 
 

日志

 
 
 
 

crontab计划任务  

2010-07-22 12:54:09|  分类: linux服务篇 |  标签: |举报 |字号 订阅

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

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

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删除任务
	[yanqing@rock ~]$ atq
		16      Wed Jul 11 02:00:00 2007 a yanqing
		17      Sat Jul 14 02:00:00 2007 a yanqing
		14      Sun Jul  8 22:00:00 2007 a yanqing
		15      Tue Jul 10 02:00:00 2007 a yanqing
	[yanqing@rock ~]$ atrm 16 14 15
	[yanqing@rock ~]$ atq
		17      Sat Jul 14 02:00:00 2007 a yanqing

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 的数值被用做时间控制文件的名称。







  评论这张
 
阅读(576)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017