FreeBSD 研习课程讲义
Prev 系统排程 Next

系统排程
 排程的分类:
    
 系统排程分成两种,一种是系统内发性的排程,另一种则是使用者自行加上的。
 透过排程,我们可以更有效率的使用机器。
 cron行程每分钟会重新检查一遍 crontab 的内容,因此修改完 crontab 档,不需重新启动 cron 服务。
 cron行程执行后,会把输出讯息,寄信给建立 crontab 的 owner 或者 寄信给 mailto 这个变数指定的 user。
 
 
  1.系统内发性排程
    档案: /etc/crontab
          此为root专用的系统内发性排程档案。
    
    格式: 格式分为7个栏位;其代表与范围分别是:
          分钟: 0~59
          小时: 0~23
          日期: 1~31
          月份: 1~12
          星期: 0~7
          *号表示任意时间。
          0和7代表星期天

     ※最后两个栏位则是,写入执行命令的身份,及所要执行的命令。
     ※如果想在第n小时执行一道命令,可设定成*/n。例如*/6在小时项目中,这将解释成
       每六小时执行一次。
 
 #
 #minute hour    mday    month   wday    who     command
 #
 # Perform daily/weekly/monthly maintenance.
 1       3       *       *       *       root    periodic daily
 15      4       *       *       6       root    periodic weekly
 30      5       1       *       *       root    periodic monthly
 a.每天的3点1分,以root身份执行,periodic中的daily程序。
 b.每周6的4点15分,以root身份执行,periodic中的weekly程序。
 c.每月1日的5点30分,以root身份执行,periodic中的monthly程序。
 
    补充: 所谓 periodic 乃是指 /etc/periodic/ 资料夹。
    
 cd /etc/periodic/ 
 
           可以看出档案依照不同的执行时间分类。
          分成每日、每周、每月、及安全部分。
 
 root@A17[/etc/periodic]#ls -al
 total 12
 drwxr-xr-x   6 root     wheel         512 Feb 10 19:08 .
 drwxr-xr-x  17 root     wheel        2048 Feb 12 15:12 ..
 drwxr-xr-x   2 root     wheel        1024 Feb 10 19:08 daily
 drwxr-xr-x   2 root     wheel         512 Feb 10 19:08 monthly
 drwxr-xr-x   2 root     wheel         512 Feb 10 19:08 security
 drwxr-xr-x   2 root     wheel         512 Feb 10 19:08 weekly
 
 
 2.使用者外加性排程
    说明:
    除了系统内发性排程之外,每个使用者可以有自己的排程,记录在 /var/cron/tabs/ 之中,
    以个别使用者为命名。
    我们可以看到,除了内发性的,使用者root还有额外自己增加的排程。
 
 root@A17[/var/cron/tabs]#ls -al
 total 4
 drwx------   2 root     wheel         512 Jan 17 04:26 .
 drwxr-x---   3 root     wheel         512 Feb 10 19:09 ..
 --rw------   1 root     wheel         307 11   8 17:04 root    
    
 
 编辑crontab档:
      crontab -e 
   
  root@A17[/var/cron/tabs]#crontab -e
     格式如同系统内发性排程,但第六栏位(身份)可以不用加上,命令部分,则需视情况加上绝对路径。
ex:  # 更新ports
          0 3,8,16,20 * * * /usr/cvsup -g -L 2 ports-supfile
        每天的3.8.16.20点整,执行更新ports。
     # 自动校时
         0 1 * * 1 /usr/sbin/ntpdate ntp-1.nctu.edu.tw
 若直接采用vi编辑该档案,不会产生作用,因为cron资料库不会更新。
 
 显示目前使用者的排程:crontab -l 
 显示某帐号的的排程: crontabl -lu username
 ex: crontab -lu kidd 
    
 3.使用者外加性排程
    若增加新的排程,旧的依旧存在。
    每次执行crontab需确定使用者身份,该指令的执行是属於何者,就由该使用者做crontab。
    每次写完cron之后,记得在旁边观看其执行状况,以免因为您的疏失而造成遗憾。
 
 
  ※控制对cron命令的存取

 1.透过/var/cron/allow以及/var/cron/deny来达成。

 2./var/cron/allow以及/var/cron/deny并不存在,此时任何人都可以建立crontab档,因此需要建立这两个档来控
   制使用者对crontab的存取。如果建立/var/cron/allow,在此档案其中的使用者帐号,就可以建立crontab。在
   /var/cron/deny中的帐号则不能建立crontab。若是两个档都同时存在,系统则优先考虑/var/cron/allow。加入
   帐号的时候,要一行一个帐号。
  


文章出处:ohaha的学习心得
作者:panda



Prev Home Next
UP 系统管理指令介绍