這篇文章主要介紹“如何理解Linux系統(tǒng)的進(jìn)程管理機(jī)制”,在日常操作中,相信很多人在如何理解Linux系統(tǒng)的進(jìn)程管理機(jī)制問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何理解Linux系統(tǒng)的進(jìn)程管理機(jī)制”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
為天門等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及天門網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站制作、網(wǎng)站建設(shè)、天門網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!一 、進(jìn)程的概念和分類
1.進(jìn)程的概念
Linux是一個多用戶多任務(wù)的操作系統(tǒng)。
多用戶是指多個用戶可以在同一時間使用同一個linux系統(tǒng);
多任務(wù)是指在Linux下可以同時執(zhí)行多個任務(wù),更詳細(xì)的說,linux采用了分時管理的方法,所有的任務(wù)都放在一個隊(duì)列中,操作系統(tǒng)根據(jù)每個任務(wù)的優(yōu)先級為每個任務(wù)分配合適的時間片,每個時間片很短,用戶根本感覺不到是多個任務(wù)在運(yùn)行,從而使所有的任務(wù)共同分享系統(tǒng)資源,這就是多任務(wù)的概念。
上面說的是單CPU多任務(wù)操作系統(tǒng)的情形,在這種環(huán)境下,雖然系統(tǒng)可以運(yùn)行多個任務(wù),但是在某一個時間點(diǎn),CPU只能執(zhí)行一個進(jìn)程,而在多CPU多任務(wù)的操作系統(tǒng)下,由于有多個CPU,所以在某個時間點(diǎn)上,可以有多個進(jìn)程同時運(yùn)行。
進(jìn)程的的基本定義是:在自身的虛擬地址空間運(yùn)行的一個獨(dú)立的程序,從操作系統(tǒng)的角度來看,所有在系統(tǒng)上運(yùn)行的東西,都可以稱為一個進(jìn)程。
需要注意的是:程序和進(jìn)程的關(guān)系可以是多對多關(guān)系!
2.進(jìn)程的分類
按照進(jìn)程的功能和運(yùn)行的程序分類,進(jìn)程可劃分為兩大類:
l) 系統(tǒng)進(jìn)程:可以執(zhí)行內(nèi)存資源分配和進(jìn)程切換等管理工作;而且,該進(jìn)程的運(yùn)行不受用戶的干預(yù),即使是root用戶也不能干預(yù)系統(tǒng)進(jìn)程的運(yùn)行。
2) 用戶進(jìn)程:通過執(zhí)行用戶程序、應(yīng)用程序或內(nèi)核之外的系統(tǒng)程序而產(chǎn)生的進(jìn)程,此類進(jìn)程可以在用戶的控制下運(yùn)行或關(guān)閉。
針對用戶進(jìn)程,又可以分為交互進(jìn)程、批處理進(jìn)程和守護(hù)進(jìn)程三類。
3) 交互進(jìn)程:由一個shell終端啟動的進(jìn)程,在執(zhí)行過程中,需要與用戶進(jìn)行交互操作,可以運(yùn)行于前臺,也可以運(yùn)行在后臺。
4) 批處理進(jìn)程:該進(jìn)程是一個進(jìn)程集合,負(fù)責(zé)按順序啟動其他的進(jìn)程。
5) 守護(hù)進(jìn)程:守護(hù)進(jìn)程是一直運(yùn)行的一種進(jìn)程,經(jīng)常在linux系統(tǒng)啟動時啟動,在系統(tǒng)關(guān)閉時終止。它們獨(dú)立于控制終端并且周期性的執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。例如httpd進(jìn)程,一直處于運(yùn)行狀態(tài),等待用戶的訪問。還有經(jīng)常用的crond進(jìn)程,這個進(jìn)程類似與windows的計劃任務(wù),可以周期性的執(zhí)行用戶設(shè)定的某些任務(wù)。
3.進(jìn)程的屬性
(1)進(jìn)程的幾種狀態(tài)
(2)進(jìn)程之間的關(guān)系
在linux系統(tǒng)中,進(jìn)程ID(用PID表示)是區(qū)分不同進(jìn)程的標(biāo)識,它們的大小是有限制的,較大ID為32768,用UID和GID分別表示啟動這個進(jìn)程的用戶和用戶組。所有的進(jìn)程都是PID為1的init進(jìn)程的后代,內(nèi)核在系統(tǒng)啟動的最后階段啟動init進(jìn)程,因而,這個進(jìn)程是linux下所有進(jìn)程的父進(jìn)程,用PPID表示父進(jìn)程。所以如果init進(jìn)程被kill,則意味著所有進(jìn)程就kill,那系統(tǒng)會重啟或關(guān)閉
舉例:ps命令輸出的httpd進(jìn)程信息:
相對于父進(jìn)程,就存在子進(jìn)程,一般每個進(jìn)程都必須有一個父進(jìn)程,父進(jìn)程與子進(jìn)程之間是管理與被管理的關(guān)系,當(dāng)父進(jìn)程停止時,子進(jìn)程也隨之消失,但是子進(jìn)程關(guān)閉,父進(jìn)程不一定終止。
如果父進(jìn)程在子進(jìn)程退出之前就退出,那么所有子進(jìn)程就變成的一個孤兒進(jìn)程,如果沒有相應(yīng)的處理機(jī)制的話,這些孤兒進(jìn)程就會一直處于僵死狀態(tài),資源無法釋放,此時系統(tǒng)默認(rèn)將init進(jìn)程作為它們的父進(jìn)程。
二、 進(jìn)程管理命令
Linux下,監(jiān)控和管理進(jìn)程的命令有很多,下面我們以ps、top、pstree、lsof四個最常用的指令介紹如果有效的監(jiān)控和管理linux下的各種進(jìn)程。
(1)利用ps命令監(jiān)控系統(tǒng)進(jìn)程
ps是linux下最常用的進(jìn)程監(jiān)控命令,重點(diǎn)講述如何利用ps指令監(jiān)控和管理系統(tǒng)進(jìn)程。
舉例:
下面是apache進(jìn)程的輸出信息
其中,UID是用戶的ID標(biāo)識號,PID是進(jìn)程的標(biāo)識號,PPID表示父進(jìn)程,STIME表示進(jìn)程的啟動時間,TTY表示進(jìn)程所屬的終端控制臺,TIME表示進(jìn)程啟動后累計使用的CPU總時間,CMD表示正在執(zhí)行的命令。并且root的PPID為1,即為Init的ID.
另一種指令方式查看子進(jìn)程與父進(jìn)程的對應(yīng)關(guān)系:
其中,%CPU表示進(jìn)程占用的CPU百分比,%MEM表示進(jìn)程占用內(nèi)存的百分比,VSZ表示進(jìn)程虛擬大小,RSS表示進(jìn)程的實(shí)際內(nèi)存(駐留集)大小(單位是頁)。
STAT表示進(jìn)程的狀態(tài),進(jìn)程的狀態(tài)有很多種:用“R”表示正在運(yùn)行中的進(jìn)程,用“S”表示處于休眠狀態(tài)的進(jìn)程,用“Z”表示僵死進(jìn)程,用“<”表示優(yōu)先級高的進(jìn)程,用“N”表示優(yōu)先級較低的進(jìn)程,用“s”表示父進(jìn)程,用“+”表示位于后臺的進(jìn)程。START表示啟動進(jìn)程的時間。
這個例子將進(jìn)程之間的關(guān)系用樹形結(jié)構(gòu)形象的表示出來,可以很清楚的看到,第一個進(jìn)程為父進(jìn)程,而其它進(jìn)程均為子進(jìn)程。同時從這個輸出還可以看到每個進(jìn)程占用CPU、內(nèi)存的百分比,還有進(jìn)程所處的狀態(tài)等等。
(2)利用pstree監(jiān)控系統(tǒng)進(jìn)程
pstree命令以樹形結(jié)構(gòu)顯示程序和進(jìn)程之間的關(guān)系,使用格式如下:
代碼如下:
pstree [-acnpu] [<PID>/<user>]
具體選項(xiàng)內(nèi)容可用pstree --help來查看,由于顯示結(jié)果的樹形結(jié)構(gòu)太長,就不再貼圖.
pstree清楚的顯示了程序和進(jìn)程之間的關(guān)系,如果不指定進(jìn)程的PID號,或者不指定用戶名稱,則將以init進(jìn)程為根進(jìn)程,顯示系統(tǒng)的所有程序和進(jìn)程信息,若指定用戶或PID,則將以用戶或PID為根進(jìn)程,顯示用戶或PID對應(yīng)的所有程序和進(jìn)程。
(3)利用top監(jiān)控系統(tǒng)進(jìn)程
top命令是監(jiān)控系統(tǒng)進(jìn)程必不可少的工具,與ps命令相比,top命令動態(tài)、實(shí)時的顯示進(jìn)程狀態(tài),而ps只能顯示進(jìn)程某一時刻的信息,同時,top命令提供了一個交互界面,用戶可以根據(jù)需要,人性化的定制自己的輸出,更清楚的了解進(jìn)程的實(shí)時狀態(tài)。
下面是top的顯示信息
通過動態(tài)信息可以看出一個進(jìn)程從上次更新到現(xiàn)在占用cpu時間,占用物理內(nèi)存(%MEM),從進(jìn)程啟動到現(xiàn)在占用cpu總時間(TIME+)等。通過了解這些信息,可以使系統(tǒng)管理員掌握每個進(jìn)程對系統(tǒng)CPU、物理內(nèi)存的使用狀況。
(4)利用lsof監(jiān)控系統(tǒng)進(jìn)程與程序
lsof全名list opened files,也就是列舉系統(tǒng)中已經(jīng)被打開的文件,通過lsof,我們就可以根據(jù)文件找到對應(yīng)的進(jìn)程信息,也可以根據(jù)進(jìn)程信息找到進(jìn)程打開的文件。
lsof指令功能強(qiáng)大,這里介紹“-c,-g,-p,-i”這四個最常用參數(shù)的使用。更詳細(xì)的介紹請參看manlsof或者lsof --help。
1) lsoffilename:顯示使用filename文件的進(jìn)程。
2)lsof -c abc:顯示abc進(jìn)程現(xiàn)在打開的文件
3)lsof -g gid:顯示指定的進(jìn)程組打開的文件情況,使用進(jìn)程組ID即GID
4)lsof -p PID:PID是進(jìn)程號,通過進(jìn)程號顯示程序打開的所有文件及相關(guān)進(jìn)程,例如,想知道init進(jìn)程打開了哪些文件的話,可以執(zhí)行“l(fā)sof-p 1”命令
5)lsof-i :通過監(jiān)聽指定的協(xié)議、端口、主機(jī)等信息,顯示符合條件的進(jìn)程信息。
例如:
顯示系統(tǒng)中tcp協(xié)議對應(yīng)的25端口進(jìn)程信息:
代碼如下:
[root@localhost ~]# lsof-i tcp:25
顯示系統(tǒng)中80端口對應(yīng)的進(jìn)程信息:
代碼如下:
[root@localhost ~]# lsof-i :80
(5) 計劃任務(wù)
計劃任務(wù)就是提前設(shè)定的一系列命名,來在特定時間里自動完成,比如一些自動備份,自動關(guān)系,自動發(fā)郵件,廣播之類
計劃任務(wù)有三個比較重要的命令
1)at安排作業(yè)在某一時刻執(zhí)行一次
2)Batch安排作業(yè)在系統(tǒng)負(fù)載不重時執(zhí)行一次
3)Cron安排周期性運(yùn)行的作業(yè)
(6)結(jié)束進(jìn)程
Kill -1重啟進(jìn)程
kill 進(jìn)程號 結(jié)束進(jìn)程
kill -9強(qiáng)制結(jié)束進(jìn)程
(7) 設(shè)置程序的優(yōu)先級
Niec :指定程序運(yùn)行優(yōu)先級別
代碼如下:
Nice -n command
Renice:改變一個正在運(yùn)行的進(jìn)程的優(yōu)先級別
代碼如下:
Renice -n pid
優(yōu)先級取值范圍為(-20,19)
(8)進(jìn)程的掛起和恢復(fù):
掛起:Ctrl+Z
終止:Ctrl+C
進(jìn)程的恢復(fù):
恢復(fù)到前臺繼續(xù)運(yùn)行:fg
恢復(fù)到后臺繼續(xù)運(yùn)行:bg
查看被掛起的進(jìn)程:jobs
到此,關(guān)于“如何理解Linux系統(tǒng)的進(jìn)程管理機(jī)制”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
網(wǎng)站名稱:如何理解Linux系統(tǒng)的進(jìn)程管理機(jī)制-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://www.rwnh.cn/article48/copchp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、服務(wù)器托管、手機(jī)網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、App開發(fā)、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容