歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> SCO Unix >> SCO UNIX作業調度

SCO UNIX作業調度

日期:2017/2/28 11:28:53   编辑:SCO Unix


   作業調度是shell的一個特性,它允許用戶使用作業調度命令,所謂作業調度實際上是時鐘守護進程cron按照用戶所提交的確定的時間在這個時間內執行某些運行作業,cron守護進程將在設定的日期規定的時間內自動地執行某樣任務。可在系統負載較輕時安排這些非交互式作業的運行,在unix中與cron配合提交任務的命令有三種:at,batch,crontab。
   cron進程的活動可存放在日志文件中,該日志文件為/usr/lib/cron/log文件,是否對cron活動進行記錄還要一個變量CRONLOG的設置,這個變量存放於/etc/default/cron文件中。缺省情況下,這個變量設置值為NO,這說明cron進程的活動內容不保留在任何文件中,若需要可將其值改為yes或將其文件名改為其他用戶需要的文件名。此外,在/etc/default/cron中MAXLOGSIZE 限制了log文件的大小,該變量以512字節為單位設定的log的最大塊數,確省為2048塊。 在/etc/default/cron中的MAXCRON變量,控制在同一時刻允許運行的最大進程數量,確省為100。
   若系統的若干用戶要使用cron進程,那麼這個用戶必須授予cron子系統的權限,給特定用戶授予cron子系統的權限的操作為 scoadmin->system->cron manager->shecdule->default->user->allow 或
scoadmin account manager ->選中用戶->users->user authorizations->authorized add cron(取消use system default ...)->ok
   對應有兩個文件可看到那些用戶具備此權限,分別為:
   /usr/lib/cron/cron.allow誰能安排cron作業的確切列表
   /usr/lib/corn/cron.deny表示誰不能安排cron作業的確切列表,只有cron.allow不存在時才有作用
  如果這兩個文件都不存在,表示只有root用戶才有安排cron作業的權限。若兩個文件都在,則cron.allow具有更高的優先權。
一、at,batch使用方法
   at,batch的功能是在以後某個時間內執行某些命令。at命令允許指定作業執行時間,batch命令只有在系統負載允許的情況下執行該作業。每個作業的id號和執行時間都可輸出到錯誤輸出上。
   at的命令行結構:
   at [ -m ] [ -f file ] [ -q letter ] time [ date ] [ increment ]
   at [ -m ] [ -f file ] [ -q letter ] -t [[CC]YY]MMDDhhmm.[SS]
   at -r job-id ... job-id指at命令作業的id號,-r指刪除該id號的作業
   at -l [job -d ...] 顯示當前的at作業
   at -l -q letter
   batch不帶參數,其提交的作業比at提交的作業比具有較低的優先級,其何時執行要看系統中已提交的作業數量。系統空閒時,提交的作業即可運行。 at,batch,crontab三個命令的使用范圍是有一定限制的,一般情況下,at,batch提交一次性的作業,作業運行完後不再運行。而crontab所提交的作業一般以固定的周期運行,在系統允許的情況在指定的周期內系統反復執行該作業。
  
QUOTE:相關文件與目錄
   /usr/lib/cron        main cron directory
   /usr/lib/cron/at.allow   list of allowed users
   /usr/lib/cron/at.deny    list of denied users
   /usr/lib/cron/queuedefs   scheduling information
   /usr/spool/cron/atjobs   spool area
   /usr/lib/cron/.proto    at and batch environment information
   /usr/lib/cron/.proto.a   at shell environment
   /usr/lib/cron/.proto.b   batch shell environment
   /usr/lib/cron/.proto    at and batch environment information
   /usr/lib/cron/.proto.a   at shell environment
   /usr/lib/cron/.proto.b   batch shell environment

   部分參數說明分別如下
   1)time
   表示時間,可指定為1,2,或4個數字,1或2個數字被認為是小時,4個數字被認為是小時和分鐘,格式為 hh:mmm
   2)date 表示日期
   3)increment 表示要在前面所指定的時間(time[date])再推後一段時間
   4)-t [[cc]YY]MMDDhhmm.[SS]
    CC 世紀
    YY 年
    MM 月
    DD 日
    hh 時
    mm 分
    SS 秒
  5)-q letter
    把指定作業置於指定字母所指示的隊列內,可以是從a到z的任何小寫字母以下隊列有特殊意義
    a at 隊列
    b batch 隊列
    c cron 隊列
  6)-m
    不使用-m 選項時,作業的標准輸出將直接mail給相應用戶(除非作業被明確重新定向)。使用-m 選項時,即使作業沒有輸出,也將以郵件形式通知用戶。
  7)-f file
    指定包含有at 作業的源文件名,以代替從標准輸入。
  8)-l [job-id]
    列出指定作業的相關信息
  9)-r job-id
    刪除指定作業
  at 和 batch 作業提交後,均被指定一個相應的作業標識符,at作業帶有 後綴.a, batch作業帶有後綴 .b 。所有作業以其作業標識符為文件名,保存在/usr/spool/cron/atjobs目錄中。
二、crontab的使用方法
   crontab命令的功能是在一定的時間間隔調度一些命令的執行。通常這些要運行的命令放在crontab文件中,該文件為/usr/spool/cron/crontabs下面與用戶名相同的文件,或在每次執行時不使用該文件名直接使用crontab -e 指令。(在at命令中,命令文件的存放是任意的)。命令執行默認的結果,無論是標准輸出還是錯誤輸出,都將以郵件形式發給用戶。
   crontab命令有三種形式的命令行結構:
   crontab [cronfile]
   crontab [-e|-l|-r]
   crontab -l -u [-e|-l|-r]
   相關文件目錄
   /usr/lib/cron         main cron directory
   /usr/spool/cron/crontabs   crontab directory
   /usr/lib/cron/cron.allow   list of allowed users
   /usr/lib/cron/cron.deny    list of denied users
   /usr/lib/cron/queuedefs    cron data file
   1) crontab [cronfile]
   cronfile是命令文件的名字。如果在命令行中指定了這個文件,那麼執行crontab命令,則將這個文件拷貝到crontabs目錄下;如果在命令行中沒有制定這個文件,crontab命令將接受標准輸入(鍵盤)上鍵入的命令,並將他們也存放在crontab目錄下。 (不建議使用該方式,如果用crontab cronfile ,將會把原來的已經提交的cron作業刪除)
   cronfile 是具有一定格式的普通文件,在文件中可以包含多余一個的作業信息,每個作業作為一個登記項,獨占一行,用空格分開的6個字段,前五個字段可以取整數值,指定何時開始工作,第六個域是字符串,稱為命令字段,其中包括了crontab調度執行的命令。具體格式如下
   minutes hours day_of_month month day_of_week command
   minutes      分鐘   0-60
   hours       小時   0-23
   day_of_month   日    1-31
   month       月    1-12
   day_of_week    星期的日 0-6(0表示星期日)
   command      命令   任何非交互的命令
   2) -l
   顯示已經提交的cron 作業
   3)-e
   對已經提交的cron 作業編輯,或添加,刪除作業建議使用該方式添加cron作業,相比手工修改/usr/spool/cron/crontabs/username文件,使用crontab -e 可以對提交的作業進行語法檢查,如果沒有按照規定6個字段提交作業,會提示相應錯誤信息。 如果手工對/usr/spool/cron/crontabs/username 編輯,為確保作業提交可按照以下步驟執行用crontab -e 編輯該文件 :x存盤退出或用ps 命令查找cron進程,用kill 殺下/etc/cron進程, rm /usr/lib/cron/FIFO;/etc/cron
   注釋: /usr/lib/cron/FIFO,當新的作業提交由crontab完成時,一個發送消息到cron守護進程的命令管道。
   4) -r 刪除當前已經提交的cron 作業
   5) -u user 對指定用戶的cron 作業進行維護。
三、環境文件
   /usr/lib/cron/.proto定義的shell環境適用於 at和batch 。
   /usr/lib/cron/.proto.a 適用於at
   /usr/lib/cron/.proto.b 適用於batch
   .proto.a ,.proto.b 與 .proto相比有更高的優先權。
   默認情況下,只存在 .proto.b 和 .proto ,且內容相同。
   以上相關維護可以使用 cron manager 實現
   cron作業提交後,未能定時完成相應任務,可按照下面的方法查找原因
   1。查看 /usr/lib/cron/log 中的提示
   2。將提交的作業輸出重新定向,查看相應的log文件
   作業提交後未能完成相應任務,通常是因為環境變量設置的問題
   例如:因PATH等變量的設置未找到相關的程序等
crontab命令簡介
   簡介
   crontab-操作每個用戶的守護程序和該執行的時間表。
   部分參數說明
   crontab file [-u user]-用指定的文件替代目前的crontab。
   crontab-[-u user]-用標准輸入替代目前的crontab.
   crontab-1[user]-列出用戶目前的crontab.
   crontab-e[user]-編輯用戶目前的crontab.
   crontab-d[user]-刪除用戶目前的crontab.
   crontab-c dir- 指定crontab的目錄。
   crontab文件的格式:M H D m d cmd.
   M: 分鐘(0-59)。
   H:小時(0-23)。
   D:天(1-31)。
   m: 月(1-12)。
   d: 一星期內的天(0~6,0為星期天)。
   cmd要運行的程序,程序被送入sh執行,這個shell只有USER,HOME,SHELL這三個環
   境變量。
   下面是一個例子文件:
   #MIN HOUR DAY MONTH DAYOFWEEK COMMAND
   #每天早上6點
   0 6 * * * date
   #每兩個小時
   0 */2 * * * date
   #晚上11點到早上8點之間每兩個小時,早上8點
   0 23-7/2,8 * * * date
   #每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點
   0 11 4 * mon-wed date
   #1月份1日早上4點
   0 4 1 jan* date
   范例
   lark:~>crontab-1 列出用戶目前的crontab.
   #MIN HOUR DAY MONTH DAYOFWEEK COMMAND
   10 6* * * date
   0*/2* * * date
   0 23-7/2,8 * * * date
Copyright © Linux教程網 All Rights Reserved