天天看點

Linux下的程序管理

在windows中分為程序和線程,而這些概念在Linux中同樣适用,而所謂的程序process既是資源配置設定的機關,一個程序的發起想要排程CPU進行執行則需要或得CPU的時間片,同樣在獲得CUP的時間片後,還有相應的優先級,進而才能有序的執行。在程序的發起後狀态分為:Running運作、Ready就緒、Sleep睡眠、Stop停止、Zomebie僵死;這些狀态的意思顧名思義相信大家都可以了解。

1、顯示目前系統上運作的前台程序可以用指令:ps

而在這裡的一些參數一部分是按照BSD的格式進行使用的,也有一部分是按照sysV格式的顯示

參數:aux:顯示目前系統上的所有程序(也是我們經常用的組合)  #ps aux

x:顯示出跟終端不相關的程序

-e:顯示所有程序

-f:顯示詳細資訊    通常使用-ef組合  #ps -ef

-ejH=axjf:按照程序的父子關系進行自動縮進

2、有時伺服器運作着大量的程序時,需要查找到某個程序,并檢視其資訊時則用到:

pgrep:查找程序

參數:-U:根據使用者的UID查找其發起的相應程序

-G:根據使用者的GID查找其發起的相應程序

-t:查找跟終端相關的程序

-P:查找父程序為某一個子程序

pidof:查找某些程序的id号

例如:#pidof bash

<a target="_blank" href="http://blog.51cto.com/attachment/201202/132227526.jpg"></a>

3、在程序資訊顯示中,可以看到STAT中有很多的符号,其意義

S:可中斷的睡眠狀态

R:運作态

D:不可中斷的睡眠态

T:停止态

Z:僵死态

&lt;:高優先級的程序

s:會話程序的發起者

N:低優先級的程序

l:多線程的程序

+:前台程序

通過分析這些程序的狀态,我們可以根據實際情況對其采取想要的操作,以達到對伺服器的調優以及對某些服務的重置。

4、說到對這些程序進行操作,這就得提到信号(Signal)

經常用到的幾個信号:

1)SIGHUP:通知某一個程序重讀自己的配置檔案卻不用重新開機

2)SIGINT:類似于ctrl+c取消

9)SIGKILL:殺死某程序

15)SIGTERM:終止

18)SIGCONT:繼續

19)SIGSTOP:停止

使用kill來發送信号:

kill -SIGNAL_NU PID  #kill -15 2887  對程序ID為2887的程序發出終止信号

kill -SIGNAL_NU PROCESS #kill -15 httpd 終止httpd服務

5、在上面提到一個程序的發起到執行是安裝其優先級的高低來進行執行順序的,是以在說一說程序的優先級

優先級分為:動态優先級(程序的發起時核心自動計算的)、靜态優先級(可手工調整)

通常情況下:I/O 裝置的優先級要高,但是擷取的CPU時間片短,當你鍵入一個字母或移動下滑鼠時,CPU就會立即進行相應,并執行,這就是因為I/O裝置的優先級較高

多媒體之類的這些程序優先級就較低,但是擷取的CPU時間片長,因為一個音樂或電影的打開,一般就會一直執行下去。而這些程序的優先級大部分都是系統核心自動計算的。

靜态優先級的調整用過調整nice值來進行調整的,而普通使用者在調整一個程序的優先級時,隻能在程序優先級的基礎上将其調低,而不能将其調高,管理者root則沒有限制;nice值:-20---19分别對應優先級100---139,nice值越小,優先級值也越低,進而其優先級越高,而在一個程序的發起時其nice值一般預設的都是0;

nice:在程序啟動時直接賦予一個值

格式:nice -n NU COMMAND

renice:在程序啟動後進行nice值的修改

格式:renice # PID

例如:#renice 2 3133

6、背景狀态

從前台轉移到背景:ctrl+z 俗稱挂起,在背景停止了,并不繼續執行

從背景轉移到前台一個特定的程序:fg %NU  

<a target="_blank" href="http://blog.51cto.com/attachment/201202/133421527.jpg"></a>

将背景的某個程序讓它繼續執行:bg %nu

使一個程序和一個中斷沒有關系:nohup COMMAND

啟動指令時直接将其送到背景:startx &amp;

在結束背景任務2時,程序狀态由Stopped變到Terminated最後結束,背景隻剩下一個任務了。

本文轉自 向陽草米奇 51CTO部落格,原文連結:http://blog.51cto.com/grass51/781193,如需轉載請自行聯系原作者

繼續閱讀