當(dāng)前位置: 首頁(yè)IT技術(shù)操作系統(tǒng) → Linux下的進(jìn)程管理

Linux下的進(jìn)程管理

更多

  在windows中分為進(jìn)程和線程,而這些概念在Linux中同樣適用,而所謂的進(jìn)程process既是資源分配的單位,一個(gè)進(jìn)程的發(fā)起想要調(diào)度CPU進(jìn)行執(zhí)行則需要或得CPU的時(shí)間片,同樣在獲得CUP的時(shí)間片后,還有相應(yīng)的優(yōu)先級(jí),從而才能有序的執(zhí)行。在進(jìn)程的發(fā)起后狀態(tài)分為:Running運(yùn)行、Ready就緒、Sleep睡眠、Stop停止、Zomebie僵死;這些狀態(tài)的意思顧名思義相信大家都可以理解。

  在windows中我們通�?梢哉{(diào)出資源管理器查看當(dāng)前執(zhí)行的進(jìn)程,而在Linux中有一個(gè)進(jìn)程樹(shù)(pstree)可以詳細(xì)的形象的展示出Linux中的進(jìn)程關(guān)系。

  1、顯示當(dāng)前系統(tǒng)上運(yùn)行的前臺(tái)進(jìn)程可以用命令:ps

  而在這里的一些參數(shù)一部分是按照BSD的格式進(jìn)行使用的,也有一部分是按照sysV格式的顯示

  參數(shù):aux:顯示當(dāng)前系統(tǒng)上的所有進(jìn)程(也是我們經(jīng)常用的組合) #ps aux

  x:顯示出跟終端不相關(guān)的進(jìn)程

  a:顯示出跟終端相關(guān)的進(jìn)程 #ps au:以進(jìn)程發(fā)起的用戶為開(kāi)頭顯示

  -e:顯示所有進(jìn)程

  -f:顯示詳細(xì)信息 通常使用-ef組合 #ps -ef

  -ejH=axjf:按照進(jìn)程的父子關(guān)系進(jìn)行自動(dòng)縮進(jìn)

  o:依照用戶的設(shè)置格式進(jìn)行顯示 #ps axo pid,tty,cmd,stat

  2、有時(shí)服務(wù)器運(yùn)行著大量的進(jìn)程時(shí),需要查找到某個(gè)進(jìn)程,并查看其信息時(shí)則用到:

  pgrep:查找進(jìn)程

  參數(shù):-U:根據(jù)用戶的UID查找其發(fā)起的相應(yīng)進(jìn)程

  -G:根據(jù)用戶的GID查找其發(fā)起的相應(yīng)進(jìn)程

  -t:查找跟終端相關(guān)的進(jìn)程

  -P:查找父進(jìn)程為某一個(gè)子進(jìn)程

  pidof:查找某些進(jìn)程的id號(hào)

  例如:#pidof bash

  

  3、在進(jìn)程信息顯示中,可以看到STAT中有很多的符號(hào),其意義

  S:可中斷的睡眠狀態(tài)

  R:運(yùn)行態(tài)

  D:不可中斷的睡眠態(tài)

  T:停止態(tài)

  Z:僵死態(tài)

  <:高優(yōu)先級(jí)的進(jìn)程

  s:會(huì)話進(jìn)程的發(fā)起者

  N:低優(yōu)先級(jí)的進(jìn)程

  l:多線程的進(jìn)程

  +:前臺(tái)進(jìn)程

  通過(guò)分析這些進(jìn)程的狀態(tài),我們可以根據(jù)實(shí)際情況對(duì)其采取想要的操作,以達(dá)到對(duì)服務(wù)器的調(diào)優(yōu)以及對(duì)某些服務(wù)的重置。

  4、說(shuō)到對(duì)這些進(jìn)程進(jìn)行操作,這就得提到信號(hào)(Signal)

  #kill -l:查看所有的信號(hào),其中前面的數(shù)字為信號(hào)的代號(hào),后面則為名字

  經(jīng)常用到的幾個(gè)信號(hào):

  1)SIGHUP:通知某一個(gè)進(jìn)程重讀自己的配置文件卻不用重啟

  2)SIGINT:類(lèi)似于ctrl+c取消

  9)SIGKILL:殺死某進(jìn)程

  15)SIGTERM:終止

  18)SIGCONT:繼續(xù)

  19)SIGSTOP:停止

  使用kill來(lái)發(fā)送信號(hào):

  kill -SIGNAL_NU PID #kill -15 2887 對(duì)進(jìn)程ID為2887的進(jìn)程發(fā)出終止信號(hào)

  kill -SIGNAL_NU PROCESS #kill -15 httpd 終止httpd服務(wù)

  5、在上面提到一個(gè)進(jìn)程的發(fā)起到執(zhí)行是安裝其優(yōu)先級(jí)的高低來(lái)進(jìn)行執(zhí)行順序的,所以在說(shuō)一說(shuō)進(jìn)程的優(yōu)先級(jí)

  優(yōu)先級(jí)分為:動(dòng)態(tài)優(yōu)先級(jí)(進(jìn)程的發(fā)起時(shí)內(nèi)核自動(dòng)計(jì)算的)、靜態(tài)優(yōu)先級(jí)(可手工調(diào)整)

  通常情況下:I/O 設(shè)備的優(yōu)先級(jí)要高,但是獲取的CPU時(shí)間片短,當(dāng)你鍵入一個(gè)字母或移動(dòng)下鼠標(biāo)時(shí),CPU就會(huì)立即進(jìn)行相應(yīng),并執(zhí)行,這就是因?yàn)镮/O設(shè)備的優(yōu)先級(jí)較高

  多媒體之類(lèi)的這些進(jìn)程優(yōu)先級(jí)就較低,但是獲取的CPU時(shí)間片長(zhǎng),因?yàn)橐粋€(gè)音樂(lè)或電影的打開(kāi),一般就會(huì)一直執(zhí)行下去。而這些進(jìn)程的優(yōu)先級(jí)大部分都是系統(tǒng)內(nèi)核自動(dòng)計(jì)算的。

  靜態(tài)優(yōu)先級(jí)的調(diào)整用過(guò)調(diào)整nice值來(lái)進(jìn)行調(diào)整的,而普通用戶在調(diào)整一個(gè)進(jìn)程的優(yōu)先級(jí)時(shí),只能在進(jìn)程優(yōu)先級(jí)的基礎(chǔ)上將其調(diào)低,而不能將其調(diào)高,管理員root則沒(méi)有限制;nice值:-20---19分別對(duì)應(yīng)優(yōu)先級(jí)100---139,nice值越小,優(yōu)先級(jí)值也越低,從而其優(yōu)先級(jí)越高,而在一個(gè)進(jìn)程的發(fā)起時(shí)其nice值一般默認(rèn)的都是0;

  nice:在進(jìn)程啟動(dòng)時(shí)直接賦予一個(gè)值

  格式:nice -n NU COMMAND

  例如:#nice -n 15 ftp 192.168.0.254

  查看其nice值

  renice:在進(jìn)程啟動(dòng)后進(jìn)行nice值的修改

  格式:renice # PID

  例如:#renice 2 3133

  6、后臺(tái)狀態(tài)

  當(dāng)一個(gè)命令執(zhí)行的時(shí)間較長(zhǎng),例如我們拷貝一個(gè)大文件,而此時(shí)他沒(méi)有執(zhí)行結(jié)束,我們是不能進(jìn)行其他的操作的,但是我們又需要進(jìn)行其他的操作,這時(shí)就可以將它移至后臺(tái): 查看后臺(tái)任務(wù):jobs

  從前臺(tái)轉(zhuǎn)移到后臺(tái):ctrl+z 俗稱(chēng)掛起,在后臺(tái)停止了,并不繼續(xù)執(zhí)行

  從后臺(tái)轉(zhuǎn)移到前臺(tái):fg 默認(rèn)調(diào)回的是有加號(hào)的

  從后臺(tái)轉(zhuǎn)移到前臺(tái)一個(gè)特定的進(jìn)程:fg %NU

  

  將后臺(tái)的某個(gè)進(jìn)程讓它繼續(xù)執(zhí)行:bg %nu

  使一個(gè)進(jìn)程和一個(gè)中斷沒(méi)有關(guān)系:nohup COMMAND

  啟動(dòng)命令時(shí)直接將其送到后臺(tái):startx &

  結(jié)束后臺(tái)的某個(gè)進(jìn)程:kill %NU

  在結(jié)束后臺(tái)任務(wù)2時(shí),進(jìn)程狀態(tài)由Stopped變到Terminated最后結(jié)束,后臺(tái)只剩下一個(gè)任務(wù)了。

熱門(mén)評(píng)論
最新評(píng)論
發(fā)表評(píng)論 查看所有評(píng)論(0)
昵稱(chēng):
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)