濮阳杆衣贸易有限公司

主頁 > 知識庫 > 簡要剖析Linux系統(tǒng)的進程管理機制

簡要剖析Linux系統(tǒng)的進程管理機制

熱門標簽:高德地圖標注技術(shù) 滴滴洗衣店地圖標注 慶陽便宜外呼系統(tǒng)報價 靈圖uu電子服務區(qū)地圖標注 如何在地圖標注多個位置 大眾點評公寓式酒店地圖標注 微信地圖標注在哪 天地圖標注線 辦理400電話怎么申請

一 、進程的概念和分類
1.進程的概念
Linux是一個多用戶多任務的操作系統(tǒng)。
多用戶是指多個用戶可以在同一時間使用同一個linux系統(tǒng);
 多任務是指在Linux下可以同時執(zhí)行多個任務,更詳細的說,linux采用了分時管理的方法,所有的任務都放在一個隊列中,操作系統(tǒng)根據(jù)每個任務的優(yōu)先級為每個任務分配合適的時間片,每個時間片很短,用戶根本感覺不到是多個任務在運行,從而使所有的任務共同分享系統(tǒng)資源,這就是多任務的概念。
上面說的是單CPU多任務操作系統(tǒng)的情形,在這種環(huán)境下,雖然系統(tǒng)可以運行多個任務,但是在某一個時間點,CPU只能執(zhí)行一個進程,而在多CPU多任務的操作系統(tǒng)下,由于有多個CPU,所以在某個時間點上,可以有多個進程同時運行。
進程的的基本定義是:在自身的虛擬地址空間運行的一個獨立的程序,從操作系統(tǒng)的角度來看,所有在系統(tǒng)上運行的東西,都可以稱為一個進程。
需要注意的是:程序和進程的關(guān)系可以是多對多關(guān)系!
    
2.進程的分類
 按照進程的功能和運行的程序分類,進程可劃分為兩大類:
l) 系統(tǒng)進程:可以執(zhí)行內(nèi)存資源分配和進程切換等管理工作;而且,該進程的運行不受用戶的干預,即使是root用戶也不能干預系統(tǒng)進程的運行。
2) 用戶進程:通過執(zhí)行用戶程序、應用程序或內(nèi)核之外的系統(tǒng)程序而產(chǎn)生的進程,此類進程可以在用戶的控制下運行或關(guān)閉。
針對用戶進程,又可以分為交互進程、批處理進程和守護進程三類。
3) 交互進程:由一個shell終端啟動的進程,在執(zhí)行過程中,需要與用戶進行交互操作,可以運行于前臺,也可以運行在后臺。
4) 批處理進程:該進程是一個進程集合,負責按順序啟動其他的進程。
5) 守護進程:守護進程是一直運行的一種進程,經(jīng)常在linux系統(tǒng)啟動時啟動,在系統(tǒng)關(guān)閉時終止。它們獨立于控制終端并且周期性的執(zhí)行某種任務或等待處理某些發(fā)生的事件。例如httpd進程,一直處于運行狀態(tài),等待用戶的訪問。還有經(jīng)常用的crond進程,這個進程類似與windows的計劃任務,可以周期性的執(zhí)行用戶設定的某些任務。
 3.進程的屬性
(1)進程的幾種狀態(tài)

(2)進程之間的關(guān)系
 在linux系統(tǒng)中,進程ID(用PID表示)是區(qū)分不同進程的唯一標識,它們的大小是有限制的,最大ID為32768,用UID和GID分別表示啟動這個進程的用戶和用戶組。所有的進程都是PID為1的init進程的后代,內(nèi)核在系統(tǒng)啟動的最后階段啟動init進程,因而,這個進程是linux下所有進程的父進程,用PPID表示父進程。所以如果init進程被kill,則意味著所有進程就kill,那系統(tǒng)會重啟或關(guān)閉

 舉例:ps命令輸出的httpd進程信息:

相對于父進程,就存在子進程,一般每個進程都必須有一個父進程,父進程與子進程之間是管理與被管理的關(guān)系,當父進程停止時,子進程也隨之消失,但是子進程關(guān)閉,父進程不一定終止。
如果父進程在子進程退出之前就退出,那么所有子進程就變成的一個孤兒進程,如果沒有相應的處理機制的話,這些孤兒進程就會一直處于僵死狀態(tài),資源無法釋放,此時系統(tǒng)默認將init進程作為它們的父進程。

    二、 進程管理命令
    Linux下,監(jiān)控和管理進程的命令有很多,下面我們以ps、top、pstree、lsof四個最常用的指令介紹如果有效的監(jiān)控和管理linux下的各種進程。
    (1)利用ps命令監(jiān)控系統(tǒng)進程
ps是linux下最常用的進程監(jiān)控命令,重點講述如何利用ps指令監(jiān)控和管理系統(tǒng)進程。
舉例:
下面是apache進程的輸出信息

其中,UID是用戶的ID標識號,PID是進程的標識號,PPID表示父進程,STIME表示進程的啟動時間,TTY表示進程所屬的終端控制臺,TIME表示進程啟動后累計使用的CPU總時間,CMD表示正在執(zhí)行的命令。并且root的PPID為1,即為Init的ID.
   
   另一種指令方式查看子進程與父進程的對應關(guān)系:

其中,%CPU表示進程占用的CPU百分比,%MEM表示進程占用內(nèi)存的百分比,VSZ表示進程虛擬大小,RSS表示進程的實際內(nèi)存(駐留集)大小(單位是頁)。
    STAT表示進程的狀態(tài),進程的狀態(tài)有很多種:用“R”表示正在運行中的進程,用“S”表示處于休眠狀態(tài)的進程,用“Z”表示僵死進程,用“”表示優(yōu)先級高的進程,用“N”表示優(yōu)先級較低的進程,用“s”表示父進程,用“+”表示位于后臺的進程。START表示啟動進程的時間。
    這個例子將進程之間的關(guān)系用樹形結(jié)構(gòu)形象的表示出來,可以很清楚的看到,第一個進程為父進程,而其它進程均為子進程。同時從這個輸出還可以看到每個進程占用CPU、內(nèi)存的百分比,還有進程所處的狀態(tài)等等。
    (2)利用pstree監(jiān)控系統(tǒng)進程
pstree命令以樹形結(jié)構(gòu)顯示程序和進程之間的關(guān)系,使用格式如下:

復制代碼
代碼如下:

pstree [-acnpu] [PID>/user>]

具體選項內(nèi)容可用pstree --help來查看,由于顯示結(jié)果的樹形結(jié)構(gòu)太長,就不再貼圖.      
pstree清楚的顯示了程序和進程之間的關(guān)系,如果不指定進程的PID號,或者不指定用戶名稱,則將以init進程為根進程,顯示系統(tǒng)的所有程序和進程信息,若指定用戶或PID,則將以用戶或PID為根進程,顯示用戶或PID對應的所有程序和進程。
    (3)利用top監(jiān)控系統(tǒng)進程
     top命令是監(jiān)控系統(tǒng)進程必不可少的工具,與ps命令相比,top命令動態(tài)、實時的顯示進程狀態(tài),而ps只能顯示進程某一時刻的信息,同時,top命令提供了一個交互界面,用戶可以根據(jù)需要,人性化的定制自己的輸出,更清楚的了解進程的實時狀態(tài)。
    下面是top的顯示信息

通過動態(tài)信息可以看出一個進程從上次更新到現(xiàn)在占用cpu時間,占用物理內(nèi)存(%MEM),從進程啟動到現(xiàn)在占用cpu總時間(TIME+)等。通過了解這些信息,可以使系統(tǒng)管理員掌握每個進程對系統(tǒng)CPU、物理內(nèi)存的使用狀況。
 
    (4)利用lsof監(jiān)控系統(tǒng)進程與程序
lsof全名list opened files,也就是列舉系統(tǒng)中已經(jīng)被打開的文件,通過lsof,我們就可以根據(jù)文件找到對應的進程信息,也可以根據(jù)進程信息找到進程打開的文件。
lsof指令功能強大,這里介紹“-c,-g,-p,-i”這四個最常用參數(shù)的使用。更詳細的介紹請參看manlsof或者lsof --help。
1) lsoffilename:顯示使用filename文件的進程。
2)lsof -c abc:顯示abc進程現(xiàn)在打開的文件
3)lsof -g gid:顯示指定的進程組打開的文件情況,使用進程組ID即GID
4)lsof -p PID:PID是進程號,通過進程號顯示程序打開的所有文件及相關(guān)進程,例如,想知道init進程打開了哪些文件的話,可以執(zhí)行“lsof-p  1”命令
5)lsof-i :通過監(jiān)聽指定的協(xié)議、端口、主機等信息,顯示符合條件的進程信息。
例如:
 顯示系統(tǒng)中tcp協(xié)議對應的25端口進程信息:

復制代碼
代碼如下:

[root@localhost ~]# lsof-i tcp:25

顯示系統(tǒng)中80端口對應的進程信息:

復制代碼
代碼如下:

[root@localhost ~]# lsof-i :80

 (5) 計劃任務
計劃任務就是提前設定的一系列命名,來在特定時間里自動完成,比如一些自動備份,自動關(guān)系,自動發(fā)郵件,廣播之類
計劃任務有三個比較重要的命令
1)at安排作業(yè)在某一時刻執(zhí)行一次
2)Batch安排作業(yè)在系統(tǒng)負載不重時執(zhí)行一次
3)Cron安排周期性運行的作業(yè)
(6)結(jié)束進程
Kill -1重啟進程
kill 進程號   結(jié)束進程
kill -9強制結(jié)束進程
(7) 設置程序的優(yōu)先級
Niec :指定程序運行優(yōu)先級別

復制代碼
代碼如下:

Nice -n command

     Renice:改變一個正在運行的進程的優(yōu)先級別

復制代碼
代碼如下:

Renice -n pid

優(yōu)先級取值范圍為(-20,19)
(8)進程的掛起和恢復:
掛起:Ctrl+Z
終止:Ctrl+C
進程的恢復:
恢復到前臺繼續(xù)運行:fg
恢復到后臺繼續(xù)運行:bg
查看被掛起的進程:jobs

標簽:臺州 海東 孝感 優(yōu)質(zhì)穩(wěn)定 九江 玉樹 昌都 哈密

巨人網(wǎng)絡通訊聲明:本文標題《簡要剖析Linux系統(tǒng)的進程管理機制》,本文關(guān)鍵詞  簡要,剖析,Linux,系統(tǒng),的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《簡要剖析Linux系統(tǒng)的進程管理機制》相關(guān)的同類信息!
  • 本頁收集關(guān)于簡要剖析Linux系統(tǒng)的進程管理機制的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    陆良县| 宁国市| 肥乡县| 筠连县| 宝清县| 扬中市| 沙坪坝区| 夏河县| 轮台县| 桃园县| 电白县| 霍林郭勒市| 中超| 澄迈县| 汨罗市| 沧州市| 乳山市| 柯坪县| 闵行区| 遂宁市| 乡城县| 谢通门县| 容城县| 卢湾区| 新乡市| 新源县| 乐都县| 屯门区| 玛纳斯县| 乌鲁木齐市| 维西| 固始县| 平阴县| 克拉玛依市| 北宁市| 高阳县| 信丰县| 安顺市| 沈阳市| 祁东县| 盐源县|