轉載:進程的基本概念

 

8.1 

8.1.1
進程

    
進程是正在執行的一個程序的實例,通常是由程序,數據集合和進程控制塊(Process Control Block 簡稱PCB)三個部分組成。
程序部分    描述了進程所要完成的功能。
數據集合    包括兩個方面的內容,即程序運行時所需要的數據部分和工作區。
進程控制塊  含有進程的描述信息和控制信息,是進程動態特性的集中反映,它是系統對進程施行識別和控制的依據。


8.1.2  
進程和程序的區別

1
程序是靜態概念,本身可以作爲一種軟件資源長期保存;而進程是程序的執行過程,它是動態概念,有一定的生命期,是動態地產生和消亡的。
2
進程是一個能獨立運行的單位,能與其他進程併發執行,進程是作爲資源申請調度單位存在的,而通常的程序段是不能作爲一個獨立運行的單位的。
3
程序和進程無一一對應關係。一個程序可以由多個進程共用;另一方面,一個進程在活動中有可順序地執行若干個程序。進程不能脫離具體程序而虛設,程序規定了相應進程所要完成的動作。


8.1.3  
父進程與子進程

1
子進程是由另外一個進程所產生的進程,產生這個子進程的進程稱爲父進程。 
2
子進程繼承某些父進程的環境,但子進程作爲幾個獨立的進程也有它自己的環境。
3
UNIX系統中,使用系統調用fork創建進程。fork複製的內容包括父進程的數據和堆棧段以及父進程的進程環境。
4
子進程共享父進程的文本段即代碼段。父進程和子進程以並行的方式執行同一程序的不同分支。


8.1.4  
進程的狀態

    S   
進程由於等待某個事件而被封鎖,又叫作等待
    R  
這種狀態的進程當前還沒有運行,但只要核心調度到它,馬上就可以投入運行,
   
又叫作就緒
    Z  
殭屍狀態。這樣的進程已經完成了它的使命,不再存在,它給它的父進程留下一
   
個記錄,包括了一個退出碼和一些時間統計信息。
    T   
由於父進程的跟蹤,通過信號停止的進程。
I   
這樣的進程雖然存在,但它既沒有被封鎖,也不可運行,這種狀態是除進程0以外
    
所有進程的起始狀態。
    X   
進程由於等待內存資源而被封鎖。
    O   
進程正在運行,它或者在覈心模式中運行,或者在用戶模式中運行。

進程的三種基本狀態

運行態  是指當前進程已分配到CPU,它的程序正在處理機上執行時的狀態。處於這
        
種狀態的進程個數不能大於CPU的數目。
就緒態  是指進程已具備運行條件,但因爲其他進程正在佔用CPU,所以暫時不能運行
        
而等待分配CPU的狀態。一旦把CPU分配給它,它立即就可運行。
封鎖態  是指進程因爲等待某種事件的發生而暫時不能運行的狀態。即處於封鎖態的
        
進程尚不具備運行條件,即使CPU空閒,它也無法使用。這種狀態有時也稱
        
爲不可運行狀態或掛起狀態。
8.1.5  
進程調度

unix系統中,由進程調度程序對進程運行進行合理安排,有分時和實時兩種調度策略。
1
、進程調度程序完成挑選進程,分配CPU的工作。
2
、缺省情況下,UNIX操作系統使用分時調度策略,在運行中動態地調整進程的優先級,
   
以提供最佳響應時間。
3
UNIX系統同時提供一種實時調度策略,允許用戶爲每個進程指定一個固定的優先級,優
   
先級最高的實時用戶將一直佔據CPU,只要他不主動放棄CPU,即使是系統核心進程也不
   
能投入運行。
4
UnixWare 7系統不是以實際的進程爲基礎進行調度的,而是以輕負荷進程(LWPs
   
爲基礎實現進程調度的。

8.1.6  UNIX
進程種類

UNIX
系統中將進程分爲兩大類:系統進程SYS和用戶進程

8.1.6.1  
系統進程SYS    
系統進程與終端無關,不由用戶啓動,通常也叫做守護進程,是核心專用的特殊程序。
下面說明01號系統進程意義:
     
進程0sysproc進程。管理換入與換出的進程,對系統中運行的進程進行合理地調度。
            
將進程從硬盤交換區調入內存的過程稱爲換入;將進程從內存調到硬盤交換
            
區的過程稱爲換出。該進程是unix核心創建的第一個進程,有多個LWPs
     
進程1init進程。系統初始化進程,是所有用戶進程和非sysproc進程的祖先。

8.1.6.2  
用戶進程
用戶進程與特定的用戶標識和終端相關聯。通過在ps命令行指定用戶名或終端ID很容易將用戶進程和系統進程區分開。要列出除root用戶進程之外的其它所有用戶進程,執行如下命令:
               ps -ef|grep –v “^ root”

8.1.6.3  
輕負荷進程(LWP
輕負荷進程(Light Weight Process)也叫做附屬進程。可以是系統進程,也可以是用戶進程。
一個進程可以有多個LWPLWP具有以下一些與衆不同的特點:
1
共享同樣的進程ID
2
共享包括地址空間在內的同一資源;
3
通過系統調用和塊I/O來使用資源;
4
獨立調度。
能夠在多處理器系統上進行並行調度是LWPs的主要優點。可以用下列方法之一來查看某進程(假定進程PID0)的LWPs
1
# ps –eL –p0
2
、進入到/proc文件系統中你要檢查的進程的PID目錄,再進入到該目錄下的lwp子目錄,
   
lwp目錄中包含LWP IDs

8.1.6.4  
死進程
死進程是已經終止,但沒有從進程表中清除的進程。可能由下列情況之一產生:
1
父進程在子進程終止之前先終止;
2
父進程沒有等待子進程終止。
如果系統存在大量死進程,就會過多佔用進程表空間,影響新進程的產生。這時,我們需要重新啓動系統以清除死進程。


8.1.7  
進程表
進程表記錄進程各種信息,進程表的長度指定允許創建進程的數量。
進程表是核心對進程進行維護的一張表,其大小由核心參數NRPOC決定的。 
進程表的基本單元是表項。進程表項記錄着進程的各種信息,包括:

          
進程的ID號(PID
          
父進程的ID號(PPID
          
用戶的ID號(UID
          
進程的優先級
          
進程的狀態
          
進程的長度

8.1.8  
前臺進程和後臺進程

前臺進程: Shell提示處打入命令後,創建一個子進程,運行命令,Shell等待命
           
令退出,然後返回到對用戶給出提示符。這條命令與Shell異步運行,即
           
在前臺運行,用戶在它完成之前不能執行另一個命令。
後臺進程: Shell提示處打入命令,若後隨一個&Shell創建的子進程運行此命令,
           
但不等待命令退出,而直接返回到對用戶給出提示。這條命令與Shell
           
步運行,即在後臺運行。後臺進程必須是非交互式的。


8.2  
查看當前進程

ps
命令
PS
命令可以檢查系統中正在運行的進程的狀態,可以把系統中全部的活動進程列出來,這些進程既包括在後臺運行的,也包括在前臺運行的。

     ps
的命令行結構:
     ps  [-edalf][-n name][-t ttys][-p pids]
        [-u users][-g groups]
    
ps命令行沒有選項時,只顯示與控制終端相關進程的基本信息。
ps
C)命令一些常用選項定義如下:
-f
:產生某個進程的一個完整清單;
-u
:產生屬於某個特定用戶進程的一個清單;
-t
:產生與特定終端聯繫的進程的一個清單;
-e
:顯示進程的完整清單


8.3  
進程運行優先級

8.3.1  
進程優先級
每個進程都有一個相應的優先級用以決定CPU對它的調度。進程優先級從01270爲最低優先級。在UnixWare 7系統中,優先級在7599之間的進程不能用kill命令終止。

8.3.2  nice
命令
    
修改進程運行的優先級,是通過增加或減少進程的nice值來實現的。但這不會真正改變進程相關的優先級,nice值影響計算進程優先級的算法。              
     nice 
命令行的結構
     nice [increment] [command] [arguments]
     increment  
增量值,它的取值範圍是1—19。如果命令行沒有
                
給出這個值,則使用默認值10 
     command    
要執行的命令。
     arguments  
它是command所帶的參量。

關於nice命令的幾點說明
1
每個進程都有自己的nice值,使用nice值來計算這個進程的優先級。nice 值的取值範圍從039,默認情況下,nice值是20 

2
進程的nice值不等於進程的優先級,但是,它與優先級有着對應關係,即nice值小的進程優先級高;nice值大的進程的優先級低。經過nice命令操作後,如果默認的nice值加上increment後,超過39,一律作爲39對待;同樣,如果計算結果小於0,一律作爲0對待。

8.3.3  renice
命令
renice
命令用來改變正在運行的進程的nice值。使用-p參數允許你通過進程ID號指定進程;你可以使用-u參數後跟用戶名或用戶ID來改變屬於指定用戶的所有進程的nice值。
例如,要增加yw1用戶的所有進程的nice值,執行如下操作:
renice 15 –u yw1 

8.4  
終止進程

kill
命令
     
使用命令killC)來終止進程。
     
命令行結構: 
      kill  [-signal]  PID
      signal
是信號,PID是進程號。

      kill 
命令向指定的進程發出一個信號signal。在默認的情況下,kill 命令向指定進程發出信號15。正常情況下,將殺死那些不捕捉或不忽略這個信號的進程。

關於kill命令的兩個說明

1
高優先級進程除非重新啓動系統,否則不能被終止。
2
kill –1 PID
一些程序使用它作爲重讀它們的配置文件的信號。
3
kill –2 PID
功能同按“Delete”鍵,用來終止一個進程。
4
kill –3 PID
   
功能同按“<Ctrl>;+/”鍵,比“kill -2”功能強大。通常產生一個包含程序內存轉儲信息的core文件。
5
kill –9 PID
   
在某些特殊的情況下,比如使用kill的普通形式無法殺死的進程,要使用該命令。信號9是不能被捕捉也不能被忽略的。因此,它可以強行終止進程的運行。


8.5  nohup 
命令-忽略掛起或退出

命令行結構:
    nohup command [arguments]&
    command  
指定要執行的命令;
arguments
是命令的參量;
&
指定在後臺運行。
    
1
command所代表的命令在執行過程中,不會受到任何結束運行的信號(hangup或者quit)的影響。
2
如果用戶沒有對輸出重新定向,則標準輸出和錯誤輸出都被送到文件nohup.out中。
3
如果用戶在當前目錄中不具備寫權限,那麼輸出就定向到文件$HOME/nohup.out中。

8.6  
關於sar命令:
sar
命令從多個方面全面地報告系統的活動情況,包括文件的讀寫情況、系統調用的使用、串口、CPU效率、內存使用狀況、進出活動以及IPC有關活動等等,可以幫助人們瞭解系統資源的使用情況,重點監視內存和CPU的使用。

sar
命令行的結構:
sar [-P processor_id[, . . . ] | ALL] [-ubdycwaqvtmpgrkAR]  [-o file] t [n]
sar [-P processor_id[, . . . ] | ALL] [-ubdycwaqvtmpgrkAR] [-s time][-e time] [-i sec] [-f file]   
 
 
sar
命令行的說明:

第一個命令行中,組合定義採樣間隔,爲採樣間隔,n爲採樣次數。應該大於5的默認值爲1-o file表示將命令執行結果以二進制格式存放在file(文件名)中。
第二個命令行中,-s time-e time分別表示報告的起始時間和結束時間。-i sec表示在sec(一個具體數字)秒的間隔選擇記錄,否則,在數據文件中所有間隔都要報告。當命令行中沒有指定採樣間隔時,將從-f選項指定的記錄文件中抽取數據;如果在這種情況下,也沒有-f選項,則從某天的/usr/adm/sa/sadd(dd爲日期號)文件中抽取數據。這個文件是標準系統活動日報數據文件。因此,sar命令既可以以實時的方式採樣當前系統活動,也可以查看已經過去的某段時間內系統中所發生的活動。

可以通過 sar 命令查看系統CPU的使用情況。在任一時刻,CPU的狀態或者閒或者忙。在CPU空閒時,有可能是在等待輸入、輸出,在輸入、輸出完成後,CPU將繼續工作;有可能是CPU沒有任務而空閒。在CPU忙時,CPU可以是處在系統模式下,也可以是處在用戶模式下。使用 sar -u 命令可以產生有關CPU的報告;使用sar -q 命令可以產生有關進程隊列的報告。
       
   1
 使用 sar -u 命令產生的有關CPU的報告所顯示內容各項的意義是:
       %usr   
以百分比的形式報告CPU處在用戶模式下的時間。
       %sys   
以百分比的形式報告CPU處在系統模式下的時間。 
 

 

; %wio   以百分比的形式報告CPU等待輸入、輸出完成的時間。
       %idle  
以百分比的形式報告CPU空閒的時間。
       %intr  
以百分比的形式報告CPU處理中斷的時間。
   
如果%idle的大小持續地低於10,說明CPU空閒的時間少,系統的CPU處理能力相對較低,進程競爭的主要資源不是內存而是CPU

   2
 使用 sar -q 命令產生的有關進程隊列的報告所顯示內容各項的意義是:
       prunq    
處理器處理的在內存中可運行的進程隊列的大小。
       %prunocc 
處理器處理運行隊列被佔用的時間百分比。
       runq-sz  
準備運行的進程運行隊列。
       %runocc  
以百分比的形式報告運行隊列被佔用的時間。
       swpq-sz  
在交換區中可執行進程的數目。
       %swpocc  
以百分比的形式報告交換區中的運行隊列所佔用的時間。
       
如果%runocc大於90,並且runq-sz的值大於2,說明系統的CPU負載相對較重,需要進行調整。


    
可以從以下幾個方面進行檢查,判斷系統中是否有超常的頁面活動:    
1
使用sar -p 命令產生頁面活動報告。如果頁面故障vflt/s的值大於100,表示系統中由於有效的頁面當前不在內存中,每秒鐘進行故障地址轉換的數量在100次以上,這將嚴重影響到系統的運行效率,表明頁面活動不正常。
2
使用 sar -w 命令產生的報告中,如果swpin/s 的值大於1,表示每秒從硬盤交換區傳送進入內存的次數超過1次,標誌着系統中也可能存在着超常的頁面活動。
3.  
使用 sar -u 命令,這條命令可以報告系統中CPU 的使用效率,如果 %sys 的大小持續高於60或者 %wio 的大小相對較高,表示系統中存在的頁面活動可能過多。
4.
使用 sar -r 命令,這條命令可以報告系統中內存和交換區的使用情況,如果自由
內存 freemen 的值低於100個頁面,將嚴重影響系統的性能。
5.
使用 sar -q 命令產生的報告中,如果 %swpocc 大於20,說明系統交換活動過於
    
頻繁。

     
系統I/O是數據從內存到外設和從外設到內存,以及外設之間的傳輸處理。通常情況下,85%的硬盤I/O可以通過使用buffer cache進行處理,buffer cache存在於內存核心的一個區域,但通常只用於系統I/O,它的大小是在系統啓動時根據內存大小自動分配的。通過修改核心參數可以改變buffer cache的大小。通常,系統把現有內存中的cache分成兩種結構,buffer cache  page cachebuffer cache存放的是數據,page cache存放的是程序,它們都要佔用相當數量的核心內存空間。

   1
.使用 sar -b 命令產生的緩存區使用報告所顯示的各項意義是:
      bread/s   
平均每秒從硬盤(或其它塊設備)讀入系統buffer的物理塊數。
      lread/s   
平均每秒從系統buffer讀出的邏輯塊數。
      %rache    
buffer cache中進行邏輯讀的百分比。
      bwrit/s   
平均每秒從系統buffer向硬盤(或其它塊設備)所寫的物理塊
                
數。
      lwrit/s   
平均每秒寫到系統buffer 的邏輯塊數。
      %wcache   
buffer cache 中進行邏輯寫的百分比。
      pread/s   
平均每秒請求進行物理讀的次數。
      pwrit/s   
平均每秒請求進行物理寫的次數。
      
在所報告的各項中,最重要的是%rache%wcache,這兩項具體體現了系統buffer的使用效率。如果%rache小於90%%wcache 低於65%,表明系統的I/O活動頻繁,系統cache的命中率相對比較低,需要增加buffer cache的大小,優化系統硬盤的讀寫操作。

   2
.使用 sar -u 命令產生CPU使用情況的報告。報告中的%wio以百分比的形式表示系統CPU等待輸入、輸出的時間。如果%wio的大小過高,表示系統的CPU花在等待輸入、輸出上的時間太多,系統的I/O性能較差,可能是由於硬盤產生的問題,也可能是內存太小等原因產生的問題。

   3
.使用 sar -d 命令產生塊設備活動的報告所顯示的各項的意義是:
      device  sar
命令正在監視的塊設備的名字。
      %busy   
以百分比的形式表示設備忙時,運行傳送請求所佔用的時間。
      avque   
在指定的時間週期內,沒有完成的請求的數量的平均值。
      r+w/s   
每秒傳送到設備或從設備傳送出的數據量。
      blks/s  
每秒傳送的塊數。每塊的大小爲512KB
   avwait  
以毫秒爲單位,表示傳送請求等待隊列空閒的平均時間。
      avserv  
以毫秒爲單位,表示完成傳送請求所需的平均時間。
      
使用 sar -d 命令可以進一步判斷系統的I/O問題是否是硬盤的I/O性能差的緣故。如果%busyavque的大小相對較高,說明硬盤的傳輸速度太慢,需要進行調整。

如果你的機器有多個CPU處理器,可以使用sar –P命令生成指定的一個或多個CPU處理器的活動報告。舉例如下:
l
生成並顯示第一個CPU的活動報告
sar –P0
l
生成並顯示第二個和第三個CPU的活動報告
sar –P1,2
l
生成並顯示第二個和第三個CPU的活動報告,每20秒採樣一次,採樣10
sar –P1,2 20 10
l
生成並顯示所有CPU的活動報告
sar –P ALL
l
生成並顯示第一個CPU發生系統調用的活動報告
sar –c P0

8.7  
進程管理器(Process Manager
在命令行中運行scoadmin-->;Process Manager。可以通過進程管理器實現如下功能:
1
從不同角度來查看進程以及相關信息;
2
查找指定進程;
3
向指定進程發送kill信號;
4
自動刷新進程信息列表。

進程管理器中Process菜單所提供的選項及其相應含義如下:
Delete —— 
從進程列表中刪除(但不殺死)被選種的進程。
Priority —— 
調整選定進程的優先級。相當於renice
Find —— 
按指定匹配串來查找一個或多個進程。
Singal —— 
發送一個kill信號給一個進程。
Find Attribute —— 
根據進程列表中某個字段進行匹配查找一個或多個進程。

進程管理器中View菜單所提供的選項及其相應含義如下:
All —— 
查看所有進程。
By User —— 
查看屬於指定用戶的進程。
By Tty —— 
查看選定的tty設備上的進程。
By Pid —— 
查看選定的一個或多個進程。
Attributes —— 
指定進程列表中要顯示哪些列字段。
Attribute Filter —— 
按指定條件過濾指定列中的項。
Sort —— 
指定按升序或降序進行排列。
Set Auto Refresh —— 
設置自動刷新進程列表的週期。
Refresh Now —— 
立即刷新當前進程列表。
Refresh Tracking —— 
設定進程相關數據刷新後按什麼樣的方式顯
示當前進程列表。
系統默認設置爲查看所有用戶進程列表。

8.8  
進程間通訊
如果一個進程不與其它任何進程通信,這個進程是一個孤立進程。不同的進程之間進行通訊通過一組工具完成,包括信號(signals),管道(pipe),共享內存(shared memory),信號燈(semaphores),消息(messages)和文件(files)等。

8.8.1  
信號
UNIX
系統中,信號的作用是報告進程錯誤或異步事件,如:
     
內存讀,寫錯誤
     
總線錯誤
     
系統調用中使用了錯誤的參量
     
子進程死亡
     
殺死進程
     
掛起/繼續進程運行
     
等等。

8.8.2  
管道
1
管道提供了一種機制,允許一個進程把信息傳遞給另一個進程。UNIX中,管道是一種特殊類型的文件:每個管道都有一個相對應的i節點。程序對管道的操作是通過文件描述符實現的。
2
管道與普通文件是有區別的。在管道中的數據是暫時的,一旦完成數據從
    
管道的讀操作,就不能再對它進行讀操作了。
      3
 通常,管道使用最多的是進行程序間的信息傳遞。

8.8.3  
共享內存
   
共享內存是指相互協作的進程,將同一內存區映射到各自的地址空間上。使用共享內存區的所有進程都可以對共享內存區進行讀,寫操作。因此,需要對共享內存區讀,寫操作進行協調,以避免可能引起的數據混亂。

8.8.4  
信號燈

1
信號燈是一個同步機制。它所提供的這種機制,可以保證在若干個進程間可以共同使用某些資源,並且可以通過外部事件使這些進程同步。
2
System V信號燈結構中,每個unix信號燈都包含一個計數器。它記錄當前可以使用的資源數量。當信號燈的值爲0時,表示沒有可用資源 

8.8.5  
消息
   
1
UNIX系統中,消息是由一組數據信息組成的,它能夠使協同操作的進程之間,通過緩衝區中的消息進行數據交換。
2
UNIX系統提供了一組系統調用,這包括創建消息列隊,向消息隊列發送消息,從消息隊列接收消息或從消息隊列中刪除消息等等。

8.9  
作業調度

8.9.1  
概念
作業調度是shell的一個特性,它允許用戶使用作業調度命令。  
所謂作業調度,實際上是時鐘守護進程cron按照用戶提交作業時確定的時間,自動地調度作業運行。

8.9.2  
關於cron

      cron(C) 
守護進程將在設定日期的設定時間內自動執行任務。你可以在系統負載較輕的空閒時間裏安排運行非交互式的工作。在unix中,可與cron配合提交作業的命令有三個:
at
batchcrontab
     
      cron
進程的活動可以記錄在日誌文件/var/cron/log中,是否對cron的活動進行記錄,取決於變量CRONLOG的設置,這個變量存在文件/etc/default/cron中。在系統默認情況下,這個變量設置爲YES,對cron 進程的活動進行記錄;只有將變量設置爲NO時,纔不記錄cron進程的活動。

控制安排cron(C)作業的兩個文件:
1
/etc/cron.d/cron.allow:這是一個表示誰能夠安排cron&作業的確切列表。如果它是一個空文件表明沒有一個用戶能安排作業。
2
/etc/cron.d/cron.deny:這是一個表示誰不能夠安排cron&作業的確切列表。這個文件只有當cron.allow不存在時才起作用。如果它是一個空列表表明任何用戶都可以安排作業。
3
、假如這兩個文件都不存在,只有超級用戶能夠安排cron作業假如這兩個文件都存在,cron.allow享有優先權。

8.9.3  at
batch命令
    at 
 batch命令的功能是在以後某個時刻執行某些命令。at 命令允許指定作業執行的時間;而batch 命令在系統負載情況允許時才執行作業。
    
通過着兩條命令把作業排隊後,每個作業的ID號以及它的執行時間都送到標準錯誤輸出上。
    
命令行的結構:
     at time[date][increment]
     at -r job [job ...]
     at -l[job ...]
     batch
            
at 
crontab命令的使用範圍:

1
一般情況下,at 命令和batch命令使用於提交一次性運行的作業,即作業只運行一次。
2
crontab命令所提交的作業,一般是按照指定的時間間隔,反覆運行。

8.9.4  crontab
命令
    crontab
命令的功能是按照一定的時間間隔調度一些命令的執行。通常這些要運行的命令存放在crontab文件中,crontab文件的名字是/usr/spool/cron/crontabs/username
 
    
命令行結構是:
    crontab [file]
    crontab  -e|-l|-r  [username]
    
這兩種crontab命令行都是可以使用的形式。

crontab
文件:

    
作業與它們預定的時間儲存在該文件裏,它是一個可用任何文本編輯器生成的ASCII 文件。每個用戶只能提出一個請求文件,文件裏的每一個請 求必須包含以spacestabs分隔的六個域。前五個域指定何時開始工作,第六個是開始運行命令第一到第五個字段的整數取值範圍分別是:
    0-59
表示分
    1-23
表示小時
    1-31
表示日
    1-12
表示月份
    0-6    
表示星期(其中0表示星期日)
這五個字段,確定了命令執行的時間和日期。

使用crontab命令需要着重注意:
1
 當對用戶的crontab文件進行修改時,並不馬上改變當前所提交的作業,其影響只有在系統再次引導後纔會產生。這是因爲由crontab命令提交的作業,最終是通過cron來調度執行的。而cron只有在系統啓動時或使用crontab命令提交新的作業時,纔會去讀crontabs目錄中的文件。
2
 由同一個用戶提交的crontab 文件,將覆蓋它以前的crontab文件的內容。
3
 在默認的情況下,作業運行結果以郵件的形式發送給用戶,如果不喜歡這種形式,可以對輸出(其中包括標準輸出和錯誤輸出)進行重新定向。

修改用戶作業:

步驟1   使用crontab -u user -e (或crontab –e usename)編輯用戶user cron(c)
    &nbs

 

p;   作業。
    
步驟2   編輯文件來增加或修改任何作業請求。
     
注:UnixWare 7系統中,默認情況下使用ed編輯器編輯用戶user cron作業。若要使用vi來編輯,可按如下操作:
       EDITOR=vi
       export EDITOR

刪除用戶作業
             crontab –r -u user 
crontab –r username

/usr/spool/cron/crontabs目錄中刪除用戶定義的作業調度文件。 

8.9.5  
任務調度器(Task Scheduler
可以利用任務調度器(在X windows下運行)編輯其他用戶的作業調度文件。任務調度器不允許在一條記錄中指定一週多天,但可以用多條記錄實現定時調度。有下列兩種方法來啓動任務調度器:
1、 在命令行運行scoadmin task
2、 CDE界面中點擊scoadmin項,選擇管理工具窗口中的Task Scheduler項。

8.10  
進程審計
通過進程審計可以對系統進行監控,從多方面較爲細緻地分析系統和用戶進程相關信息,能及時、準確地發現系統錯誤。在/usr/lib/acct目錄中包含了所有的進程審計命令。

8.10.1  
打開進程審計
方法一:通過Reports Manager啓動進程審計
1、 運行scoadmin
2、 選擇System-->;Reports Manager-->;Accounting-->;Enable
3、 退出Reports Manager
也可以直接在命令行輸入下列命令進入Reports Manager
# scoadmin rep
之後選擇Accounting-->;Enable即可。
這時系統將生成/etc/rc2.d/S02acct/etc/rc0.d/K02acct兩個文件,同時在/usr/spool/cron/crontabs/adm文件中加入相關任務調度記錄項,這些記錄項所執行的操作及其功能如下:
/usr/lib/acct/ckpacct
:檢查文件/var/adm/pacct大小。當該文件大小爲500個塊時,文件被更名爲/var/adm/pacct?文件並創建一個新的/var/adm/pacct文件。
/usr/lib/acct/runacct
:生成供Reports Manager使用的報告。
/usr/lib/acct/dodisk
:收集用戶磁盤使用情況的有關信息。
/usr/lib/acct/monacct
:生成月審計報表。

方法二:在命令行方式下啓動進程審計
運行如下命令:
# /usr/lib/acct/startup
該命令不生成/etc/rc2.d/S02acct/etc/rc0.d/K02acct兩個文件以及/usr/spool/cron/crontabs/adm文件中相關任務調度記錄項。
打開進程審計後,進程審計記錄被寫入文件/var/adm/pacct中。

8.10.2  
產生審計報告
1、 運行scoadmin rep,從Reports下拉菜單中可以選擇產生各種審計報表。
2、 可以在命令行運行下列命令來查看進程審計報表文件:
      # acctcom [/var/adm/pacct]
      
進程審計文件包含八個字段,分別如下:
      COMMAND NAME
:命令名 END TIME:進程結束時間
   USER
:用戶註冊名 REALSECS):實時時間(秒)
   TTYNAME
tty設備名 CPUSECS):CPU時間(秒)
   START TIME
:進程啓動時間  MEANSIZEK):收入
另外,你可以通過命令行產生各種不同類型的進程審計報表並將報表內容輸出到指定文件中。舉例如下:
1、 產生某用戶的進程審計報表:
      # acctcom –u login_name /var/adm/pacct
2、 產生某用戶組的進程審計報表:
      # acctcom –g group_name /var/adm/pacct
3、 產生運行在特定終端上的進程審計報表:
      # acctcom –l /dev/term/00t /var/adm/pacct

8.10.3  
關閉進程審計
方法一:在Reports Manager中關閉進程審計
1、 運行scoadmin
2、 選擇System-->;Reports Manager-->;Accounting-->;Enable
3、 退出Reports Manager
也可以直接在命令行輸入下列命令進入Reports Manager
# scoadmin rep
之後選擇Accounting-->;Disable即可。
這時系統將刪除/etc/rc2.d/S02acct/etc/rc0.d/K02acct兩個文件,同時在/usr/spool/cron/crontabs/adm文件中刪除相關任務調度記錄項。
方法二:在命令行方式下關閉進程審計
運行如下命令:
# /usr/lib/acct/shutacct
該命令不刪除/etc/rc2.d/S02acct/etc/rc0.d/K02acct兩個文件以及/usr/spool/cron/crontabs/adm文件中相關任務調度記錄項。

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章