第十六章、例行性工作排程 (crontab)
最近升级日期:2009/09/11

大标题的图示重点回顾
  • 系统可以透过 at 这个命令来排程单一工作的任务!『at TIME』为命令下达的方法,当 at 进入排程后, 系统运行该排程工作时,会到下达时的目录进行任务;
  • at 的运行必须要有 atd 服务的支持,且 /etc/at.deny 为控制是否能够运行的使用者帐号;
  • 透过 atq, atrm 可以查询与删除 at 的工作排程;
  • batch 与 at 相同,不过 batch 可在 CPU 工作负载小於 0.8 时才进行后续的工作排程;
  • 系统的循环例行性工作排程使用 cron 这个服务,同时利用 crontab -e 及 /etc/crontab 进行排程的安排;
  • crontab -e 配置项目分为六栏,『分、时、日、月、周、命令』为其配置依据;
  • /etc/crontab 配置分为七栏,『分、时、日、月、周、运行者、命令』为其配置依据;
  • anacron 配合 /etc/anacrontab 的配置,可以唤醒停机期间系统未进行的 crontab 任务!

大标题的图示本章习题
( 要看答案请将鼠标移动到『答:』底下的空白处,按下左键圈选空白处即可察看 )
简答题:
  • 今天假设我有一个命令程序,名称为: ping.sh 这个档名!我想要让系统每三分钟运行这个文件一次, 但是偏偏这个文件会有很多的信息显示出来,所以我的 root 帐号每天都会收到差不多四百多封的信件,光是收信就差不多快要疯掉了! 那么请问应该怎么配置比较好呢?
    这个涉及数据流重导向的问题,我们可以将他导入文件或者直接丢弃!如果该信息不重要的话, 那么就予以丢弃,如果信息很重要的话,才将他保留下来!假设今天这个命令不重要, 所以将他丢弃掉!因此,可以这样写:
    */3 * * * * root /usr/local/ping.sh > /dev/null 2>&1
  • 您预计要在 2010 年的 2 月 14 日寄出一封给 kiki ,只有该年才寄出!该如何下达命令?
    at 1am 2010-02-14
  • 下达 crontab -e 之后,如果输入这一行,代表什么意思?
    * 15 * * 1-5 /usr/local/bin/tea_time.sh
    在每星期的 1~5 ,下午 3 点的每分钟,共进行 60 次 /usr/local/bin/tea_time.sh 这个文件。 要特别注意的是,每个星期 1~5 的 3 点都会进行 60 次ㄟ!很麻烦吧~是错误的写法啦~ 应该是要写成:
    30 15 * * 1-5 /usr/local/bin/tea_time.sh
  • 我用 vi 编辑 /etc/crontab 这个文件,我编辑的那一行是这样的:
    25 00 * * 0 /usr/local/bin/backup.sh
    这一行代表的意义是什么?
    这一行代表......没有任何意义!因为语法错误!您必须要了解,在 /etc/crontab 当中每一行都必须要有使用者才行!所以,应该要将原本那行改成:
    25 00 * * 0 root /usr/local/bin/backup.sh
  • 请问,您的系统每天、每周、每个月各有进行什么工作?
    因为 CentOS 系统默认的例行性命令都放置在 /etc/cron.* 里面,所以,你可以自行去: /etc/cron.daily/, /etc/cron.week/, /etc/cron.monthly/ 这三个目录内看一看, 就知道啦! ^_^
  • 每个星期六凌晨三点去系统搜寻一下内有 SUID/SGID 的任何文件!并将结果输出到 /tmp/uidgid.files
    vi /etc/crontab
    0 3 * * 6 root find / -perm +6000 > /tmp/uidgid.files

 
     
http://linux.vbird.org is designed by VBird during 2001-2011. ksu.edu 

本网页主要以Firefox配合解析度 1024x768 作为设计依据     鸟哥自由软件整合应用研究室