天天看點

Linux程序管理(一)

 程序管理的概念

 1.程式是靜态的,本身作為一個長期軟體資源儲存着,而程序是動态的,,有一定的生命周期,是動态産生和消亡的,程序每次執行一個時間片的長度在核心中,當時間片結束後程序就要讓出核心給下一個等待運作的程序;程序會将其資訊儲存在記憶體結構體中,這樣當程序再一次執行時,就可以通過記憶體結構體所儲存的資訊達到上一次執行完畢時的狀态;

 2.程式和程序沒有一一對應關系,程序在運作的狀态下回去使用程式;

 3.程序是具有父子關系的;子程序由父程序建立,通過fork()系統調用,将父程序的資料,堆棧段以及程序環境放到子程序當中;當子程序完成其工作時,由其父程序将子程序進行回收處理;将父程序中的資料放入子程序的複制是寫時複制,當調用子程序時才會啟用;

 在CentOS環境下,核心在正常啟用後會執行一個init()的程序來初始化系統;

  CentOS5及以前的版本:SysV Init,Classic Init

  執行init()程序由init去建立子程序,以執行腳本的方式去建立子程序,CentOS5的執行方式是串行的,就是一個一個的去執行這些腳本,是以運作速度會很慢;

  CentOS6:upstart

  執行init()程序由init去建立子程序,不同于CentOS5的是,其執行方式是并行的,可以同時建立多個程序,若其具有多個CPU的話,其效果會更加明顯,運作速度較快;

  CentOS7:systemd

  可以以其自身獨立的進行整個作業系統的的啟動工作,也就是說,隻需要啟動一個systemd程序,就可以将其他服務程序啟動起來,這些服務程序是我們目前需要的程序,當我們需要更多時,才會去啟用他們,是以CentOS7的運作速度會較之前的更快;

  前台程序:在前台輸入指令,建立對應的子程序,在指令運作的時間内,前台無法運作其他程序;

  背景程序:在前台輸入指令,建立對應的子程序,指令運作轉入背景執行,不占用前台;

  守護程序:在系統引導的過程中被啟用,與任何終端無關;

  使用者程序:使用者登入系統後才啟用,通過終端啟動的程序;

 程序優先級:程序的執行是根據其優先級來判斷哪個先執行,那個後執行;程序的優先級别從0到139

0到99為系統優先級,數值越高優先級越高,100到139為靜态優先級,數值越低優先級越高;

  nice值:-20至19

  0表示優先級别當中的120,-20表示100,19表示139;隻有管理者能使用負整數提高程序的優先級别,使用者隻能使用正整數降低程序的優先級别;

  nice -n 優先級 程序名

  運作程序并且指定優先級别;

  renice -n 優先級 程序名

  對于已經運作的程序,修改其優先級别;

  程序相關指令

  pstree:顯示程序樹

  ps:顯示程序相關資訊,如有效使用者,PID,占用CPU和記憶體的百分比等;

  ps有兩種形式的選項

  BSD風格:

    a:與終端相關的程序;

    x:與終端無關的程序;

    u:顯示發起程序的使用者賬戶名稱;

  例

  USER:程序的所有者;

  PID:程序辨別符;

  %CPU:程序占用CPU的百分比;

  %MEM:程序占用記憶體的百分比;

  VSZ:虛拟記憶體集;

  RSZ:常駐記憶體集;

  STAT:程序狀态

    R:正在運作;

    S:可中斷的睡眠狀态;

    D:不可中斷的睡眠狀态;

    T:被跟蹤/已停止;

    Z:僵死态;

    +:前台程序;

    <:高優先級程序;

    N:低優先級程序;

  TIME:程序累積的CPU占用時間;

 UNIX風格:

  -e:所有程序;

  -F:以完整格式顯示程序資訊;

  -H:以層級結構顯示父子關系;

 例

 PPID:父程序PID;

 SZ:虛拟記憶體集;

 RSS:常駐記憶體集;

 PSR:表示此程序在哪個CPU核心上運作;

 C:表示程序占用的CPU時間的百分比;

 pgrep:搜尋相關程序;

 -u uid:根據使用者uid搜尋以該使用者為有效使用者的程序;

 -U uid:根據使用者uid搜素以該使用者為真實使用者的程序;

 -l pattern:搜尋程序名,根據部分程序名相關資訊;

 pidof:顯示程序名稱對應的程序ID;

 top:顯示程序的相關資訊,較全面;

 第一行:

 目前系統時間

 系統運作時長

 目前系統使用者登入數

 在1分鐘,5分鐘,15分鐘時程序平均等待數

 第二行

 程序總數

 程序運作數

 程序睡眠數

 程序等待數

 程序僵死數

 第三行

 占用CPU的百分比

 us:使用者程序占用CPU的百分比;

 sy:核心級程序占用CPU的百分比;

 ni:使用nice值調整了程序優先級後額外占用的CPU百分比;

 id:CPU空閑時間百分比;

 wa:等待IO完成占用CPU的百分比;

 hi:硬體中斷占用CPU的百分比;

 si:軟體終端占用CPU的百分比;

 st:被虛拟化程式等偷走的CPU時間的百分比;

 第四行

 記憶體的相關資訊

 第五行

 以KB為機關顯示swap空間的使用情況:

 第六行

 程序相關資訊

 top指令是前台程序,具有互動指令

 1:顯示不同CPU核心的使用情況;

 P:對CPU占用百分比進行排序顯示;

 M:對記憶體占用百分比進行排序顯示;

 T:根據累計占用CPU時間進行排序;

 q:退出top指令;

 vmstat:實際記憶體統計;

 procs

  r:正在運作的程序數;

  b:阻塞的程序數;

 memory

  swpd:記憶體被使用的數量;

  free:空閑的記憶體數量;

  buff:資料緩沖區中的記憶體數;

  cache:資料緩存區中的記憶體數;

  buff和cache中的記憶體數是可以取用的;

 swap

  si:進入交換空間的程序數;

  so:出去交換空間的程序數;

 io

  bi:塊資料進入記憶體的數量;

  bo:記憶體資料進入塊資料的數量;

 System

  in:硬體中斷與軟體中斷數量;

  cs:上下文切換;

 CPU

  us:使用者程序占用CPU的百分比; 

  sy:核心級程序占用CPU的百分比; 

  id:空閑CPU的百分比; 

  wa:等待IO完成的CPU的百分比; 

  st:被虛拟化程式等偷走的CPU時間的百分比;

 程序管理指令:

 kill:關閉程序

 kill [signal] pid

 signal

    1) SIGHUP:無需關閉對應程序而讓其重新讀取其自身的配置檔案;

    2) SIGINT:終止正在運作的前台程序;

    9) SIGKILL:沒有任何預兆的終止正在運作的程序,殘暴;

    15) SIGTERM:預設信号,終止正在運作的程序;

    18) SIGCONT:讓轉入背景的程序繼續運作;

    19) SIGSTOP:讓程序轉入背景并停止運作;

 killall:關閉所有同名的程序;

 killall 程序名

 jobs:檢視背景程序;

 背景程序除了一開始便在背景運作的程序之外,還可以将前台程序轉入背景運作;

 ①Ctrl+Z:在前台程序運作之後按鍵,使之轉入背景;

 ②指令 &:運作指令時加個“&”将其直接轉入背景運作;這樣的程序也是與終端相關的程序;如果終端關閉,則此類程序也會終止;

 ③nohup 指令 &:使其啟動并轉入背景,這樣的程序是與終端無關的程序;

 bg:背景作業在背景運作;

 bg id

 fg:将背景作業放入前台運作;

 fg id

 本文轉自 wujunqi1996 51CTO部落格,原文連結:http://blog.51cto.com/12480612/1951105

繼續閱讀