MSN: Phenzer@hotmail.com 欢迎加为好友讨论测试

linux下执行周期性计划任务--"perl+shell 实现自动化测试必备"

上一篇 / 下一篇  2010-11-08 11:44:56 / 个人分类:Linux

   有时候运行一个命令(例如find)可能要等很长时间,这是我们可以让这个运行时间很长的命令或进程在后台运行。
还有,管理员或者是像借用Shell实现自动化(详见perl+shell实现自动化测试),那周期性启动任务是少不了的了,此文结合实例浅谈一下周期性执行任务命令crontab

一、周期性执行任务命令crontab
   crontab是使用crond服务安排周期性计划任务,使用service crond start/stop 开启/停止服务
   1.原理
    crond进程搜索crontab文件并载入内存,crontab文件即/var/spool/cron/目录下以用户名命名的文件。
    crond进程启动后,它首先检查是否有用户设置了crontab文件,若没有直接转入"休眠"状态,释放系统资源。
    crond每分钟醒来一次,查看crontab文件决定当前是否有需要执行的命令。
    命令执行结果后,任何输出都将作为邮件发送给crontab的所有者。
  2.创建crontab文件
    (1)创建一个名为test的crontab文件:
       vi test
    (2)写计划内容(具体格式参考接下来的内容)
       58 1 10 11 3 /bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
      表示在11月10号(星期三)1点58 执行/bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt命令
    (3)提交计划任务
      crontab test,然后到/var/spool/cron目录下可以看到有个该文件的副本,文件名就是用户名。
    
  3.编辑crontab文件
      crontab -e来编辑当前用户的crontab文件
      crontab -e -u 用户名,指定特定用户编辑
     
  4.crontab文件书写格式
    该文件有6部分组成,每部分用空格隔开
     第一部分minute:一小时中的哪一分钟[0--59]
     第二部分hour:一天中的哪个小时[0--23]
     第三部分day of month:一个月中的哪一天[1--31]
     第四部分month of year:一年中的那一个月[1--12]
     第五部分day of week:一周中的哪一天[0--6],0代表周日
     第六部分commands:周期性执行的命令,需要使用命令的全路径(绝对路径)
    
     这些项都不能为空,必须输入。
     若用户不需要指定其中的几项,可以使用通配符*表示任何时间。
     每个时间字段可以指定多个值,使用逗号将其隔开。
     表示区域时使用-,例如5-8
     用户必须具有运行计划任务对应命令或程序的权限
   4.查询计划任务
crontab -l 将使在标准输出显示当前的crontab
   5.删除计划任务
crontab -r 删除当前的crontab文件

   6.crontab命令权限限制
     crontab的配置文件cron.allow和cron.deny可以限制哪些用户可以使用crontab命令
     若/etc/cron.allow文件存在,那么只有列在此文件中的用户(一行一个用户名)才可以使用crontab命令。如果这个文件不存在,则查/etc/cron.deny文件,若这个文件存在,则在此文件中列出的用户不能使用crontab命令。
     若2个文件都不存在,则只有root用户能使用crontab命令
     若2个文件都存在,而且均为空,则所有用户都可以使用crontab命令

  7.实例
    (1)每晚2:30运行/bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
30 2 * * * /bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
    (2)每月1、10、22号的5:55运行/bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
55 5 1,10,22 * * /bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
    (3)每周六、周日的11:14运行/bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
14 11 * * 6,0 /bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
    (4)每天19到22点之间每隔30分钟运行/bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
0,30 28-23 * * * /bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
    (5)每周六23点运行/bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt
0 23 * * 6 /bin/cat /etc/cron.hourly/mcelog.cron> /root/pzhang/sssss.txt


TAG: crontab 实例 运行 计划任务

 

评分:0

我来说两句

Open Toolbar