AIX 5L 學習大綱/簡易教程(3)(未經許可,請勿COPY)

大可山發表於2009-01-06

(續前)

(七)自動執行作業

1、作業控制
暫停正在執行的程式或作業:       ^Z
使暫停任務繼續在後臺執行:       bg命令
使暫停任務或後臺程式轉前臺執行: fg命令
檢視暫停或後臺作業:             jobs命令(可得到作業號)
使用者退出系統後還不會結束執行:   nohug
使用者一旦退出系統,nohug啟動的作業無法在jobs命令顯示中更新。
#kill %作業號   (終止指定作業號的程式)
#fg %作業號
#bg %作業號

#nohug Command [Arg...][&]   (加&時則在後臺執行)
輸出都會被寫到當前目錄下的nohug.out檔案中,在沒有寫許可權時,重定向到$HOME/nohug.out檔案。
eg. $nohug find /-name myprg -print &

2、at命令
從標準輸入或指令碼檔案中讀取命令,並在指定時間執行。
一般地,at執行後會把標準輸出和錯誤輸出以email形式傳送給使用者,除非使用者作了重定向。
at只在預定時間執行一次,如果未開機則無法執行。但使用者是否退出系統則不影響at命令的執行。

at [-c | -k | -s | -q Queue][-m][-f File]{-t Date | Time [Day] [Increment]}

-c             用csh來執行,相當於-q f
-k             用ksh來執行,相當於-q e
-s             用bsh
-q Queue       將作業放入指定佇列,預設情況下預定作業放在a佇列中,而b,c,d是
               保留的佇列名。(b是batch作業,命令從標準輸入讀入,Time引數由
               now關鍵字指定;c是cron作業,d是sync作業)
-m             郵件傳送
-f File        檔案代替標準輸入
-t Date ...    指定執行時間。
               其中,Day是星期幾,如Sunday;
               也可以是月份全稱,如December.
可用管道符將命令Command告訴給at命令在Time時間執行。
eg. $echo Command | at Time(Time為指定時間)
還可用ls命令檢視所有at作業:
#cd /var/spool/cron/atjobs
#ls -l
[實質:at命令發出後,即給在at命令中指定的程式或命令分配一個作業號,並在此目錄中進行排隊,所以可用ls -l檢視到]

-t 後面的引數中:
Date 格式:
           [[cc]YY]MMDDhhmm[.SS]
             19 83 03180958 .25
             20 05 11261709 .33
             年份  月日時分  秒
Time 格式:
           am(上午,A也可)
           pm(下午,P也可)
           zulu(格林威治時間)
      也可以:noon(N),midnight(M),now(現在)
$at now next week        下週的現在
$at now +38 days         38天后的現在
$at noon tomorrow
$at 3:00 pm Friday next work

用at命令顯示當前系統中已建立的預定作業:
$at -l [-o] [Job ... | -q Queue]
     |   |   -------   --------
     |   |      |         |
     |   |   作業號   作業佇列名
     |   |
     |   +-- 按時間順序顯示
     +-- 顯示已建立作業

$at -n [User]
eg. #at -n johnson     顯示johnson在使用者佇列中的檔案數

$at -r [-F] [-i] [Job ... | -u User]
-r       刪除已存在的作業
-F       禁止刪除校驗
-i       互動方式
Job ...  作業號
-u User  刪除指定使用者的所有作業(僅root使用者可用)
#atrm 作業號 (相當於:#at -r 作業號,作用都是刪除由at建立的作業)
凡由at命令建立的作業都由cron服務程式在預定的時間執行。
#atq [-c | -n] [User ...]  (顯示等待執行的作業佇列)
-c    時間排序
-n    只顯示作業號

以下兩個檔案共同控制使用者使用at和batch命令的許可權:
/var/adm/cron/at.allow (允許)
/var/adm/cron/at.deny (禁止)
只有root使用者可修改、刪除、建立上兩個檔案。

batch命令解決系統負載瓶頸對預定作業的影響。
batch實際上是呼叫at -b -m now命令,其一般格式與at相同。
週期性地自動執行命令(cron程式:自動在定時執行或週期性執行作業)
cron程式由init程式啟動,只需啟動一次,直至系統關閉。

由cron程式完成的事件(定義在/var/adm/cron/queuedefs檔案):
(1)crontab命令
(2)at
(3)batch
(4)sync(系統同步事件,同步寫磁碟操作)
(5)ksh或csh
檢查cron程式是否正常執行:
#crontab -e 編輯crontab檔案新增以下記錄:
***** /bin/date,然後檢查使用者信箱
檢查:#ps -ef |grep cron 檢視cron程式是否執行,如沒有執行,檢查檔案/etc/inittab中是否有下面一行記錄。
cron:23456789:respawn:/usr/sbin/cron
如無,用smitab命令或vi新增上行記錄;
然後,再執行一次:#telinit -q (讓init程式重啟cron程式)
再用ps命令檢查它是否正常執行。

檢視哪些使用者已建立cron作業:
#cd /var/spool/cron/crontabs
    [實質:cron機制為每個使用者建立一個crontab檔案,以使用者名稱為檔名,並放在此目錄下]
#ls -l

skulker命令:刪除過時,不再需要的檔案,主要是/tmp目錄下的檔案,在指定時間之前的檔案,a.out檔案、core檔案或ed.hup檔案。(只由root使用者執行)
skulker可與find,xargs命令組合使用,以查詢指定條件的檔案。(請謹慎使用該命令!)

/usr/lib/smdemon.cleanu >/dev/null
指令碼檔案:用於清理sendmail命令的佇列和維護/var/spool/mqueue/log檔案。

crontab檔案記錄的格式:
minute  hour   day_of_month     month  weekday           command
0~59    0~23   1~31每月第幾天   1~12   0~6(0為星期日)  Shell命令或指令碼

(1)從...到....:數字用“-”連線,表範圍,如1-5表示1,2,3,4,5。
(2)單獨數字表示所屬時間內,如Month中填6,表示6月內;
(3)逗號分隔,表示單列項,如1,3,5
(4)*號表所有合法值,如:*放在month表示1~12
舉例:0 0 1,20 * 5 ...
表示每月1日,20日和每週5執行...
如該字串包含%(除\%外),則%之前為命令,之後為標準輸入部分。
如johnson在每個週末下午5:50向所有使用者祝週末愉快,則在/var/spool/cron/crontabs目錄下建一個johnson的檔案,則johnson使用者的crontab檔案就是:/var/spool/cron/crontabs/johnson,在此檔案中新增如下記錄:
0 16 * * 5 /usr/sbin/wall %HAPPY WEEKEND!

新增和修改cron作業
對crontab檔案進行編輯:(1)vi命令手工編輯(2)使用crontab工具
#crontab [-e | -l | -r | -v | File]
-e     編輯當前使用者的crontab檔案,如不存在,則啟動編輯佳話來建立之。
-l     顯示使用者的crontab檔案內容
-r     從crontabs目錄中刪除使用者的crontab檔案
-v     顯示使用者cron作業提交的時間

使用crontab命令兩種方式:
(1)手工方式:手工建立文字檔案如:TempCronjobs,它包括cron程式所需要的內容,則:
$crontab TempCronjobs
該命令首先對TempCronjobs的內容進行合法性檢查,如有效,則copy到/var/admn/cron/crontabs目錄中,並以使用者名稱為檔名或覆蓋當前使用者原來的crontab檔案。
(2)使用crontab -e,它會自動建立或修改以當前使用者名稱為檔名的crontab檔案。
如果當前使用者的crontab不存在,則它會在/var/admn/cron/crontabs目錄中建立它;
如已存在,則先COPY原crontab檔案的一個副本到/tmp目錄下,再對該副本進行編輯,編輯完成後,檢查該副本內容的有效性,再用副本覆蓋原檔案。
顯示crontab檔案的內容:
$crontab -l
刪除一個cron作業,用crontab -e刪除crontab檔案中包含要刪除作業的那一行。(也可以用vi修改)

[注意:避免root使用者使用crontab -r命令,它會刪除/var/spool/cron/crontabs/root檔案,此檔案包含診斷硬體錯誤和檢查系統故障等的日常性定時作業。一旦刪除,會對系統安全構成威脅。此時,只能通過以前的備份來恢復它]

禁止或允許使用某些使用者使用crontab或at命令:
在/usr/adm/cron目錄下建立cron.allow, cron.deny, at.allow, at.deny檔案。
cron.allow和cron.deny都不存在,則只有root使用者可用crontab命令。如相關檔案存在,則存在優先原則;*.allow優先於*.deny。

/var/adm/cron/log檔案中記錄cron程式的所有活動日誌。應該定時清理此cron日誌檔案,以免它太大,佔用空間。

Chapter 18 網路檔案系統NFS
NFS:Network File System 網路檔案系統,Sun Microsystems公司1984年開發,是事實上的工業標準,UNIX系列,WINDOWS系列均支援。
NFS是一個分散式檔案系統,它允許使用者訪問遠端系統上的檔案和目錄,對使用者而言猶如本地。使用者可在本地使用作業系統命令建立、刪除、讀寫遠端檔案和目錄,設定相關屬性。通過使用RPC(遠端過程呼叫)而不受機器型別、作業系統和網路結構的限制。
NFS基於客戶機/伺服器模式。客戶機在訪問伺服器匯出的檔案系統之前,必須先在本地安裝(Mount)這個檔案系統。
遠端資源通常寫作:hostname:pathname格式;hostname為NFS伺服器的主機名,pathname為伺服器上被匯出目錄的絕對路徑。
安裝點(Mount Point):在客戶機上安裝遠端資源的那個目錄。
NFS的具體協議是RPC(遠端過程呼叫)協議與XDR(外部資料表示)協議。RPC是通過UDP和TCP在網路中傳送資料包,所以NFS也依賴於TCP/IP。。RPC和XDR是一套基於TCP/IP的應用程式程式設計介面。
NFS協議是無狀態的。portmap守候程式的主要功能是把RPC程式號轉化為Internet的埠號。它由/etc/rc.tcpip命令檔案啟動,而標準的RPC程式通常由inetd程式啟動。

啟動NFS服務:#mknfs [-I | -N | -B]
[啟動條件]/etc/exports檔案必須存在,否則nfsd和rpc.mountd程式不會啟動。
如不存在,使用:#touch /ect/exports建立一個空的/etc/exports檔案,再啟動NFS服務。

#mknfs -N   (-N 立即執行/etc/rc.nfs命令檔案)
在系統啟動時即執行/etc/rc.nfs命令檔案,則需要在/etc/inittab檔案中新增一條啟動NFS服務的記錄:
#mknfs -I  (-I 新增一條記錄至/etc/inittab檔案中)
需要新增自動啟動記錄並立即執行,則:
#mknfs -B   (這是mknfs的預設引數)

startsrc也可啟動NFS程式,NFS程式也可單獨啟動。
如:#startsrc -s rps.mountd   (啟動rpc.mountd程式)
要啟動NFS的所有程式,可以:#startsrc -g nfs

關閉NFS服務:#rmnfs [-I | -N | -B]  (引數意義相似,整體作用與mknfs相反)

檢視NFS程式是否在執行:#lssrc -g nfs

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14601556/viewspace-528499/,如需轉載,請註明出處,否則將追究法律責任。

相關文章