LINUX系統中進程如何管理控制(一)

上篇文章詳細介紹了LINUX命令程序通過獲取SHELL環境中的數據(此處的數據通常稱爲環境變量)來輸出本機相應的配置數據,從而掌握在LINUXSHELL環境的搭建技巧。那麼,今天,這篇文章主要圍繞linux系統中的進程展開描述。

程序與進程的區別

程序的概念:作爲二進制文件,屬於靜態的;

進程的概念:作爲程序運行的過程,屬於動態的,具有生命週期及其運行狀態特徵。

說到“進程”,就會聯想到“多任務”這個概念。目前幾乎所有的操作系統都支持多任務,即操作系統初始化後可支持多任務多進程同時運行或無縫切換。Linux核心是通過使用進程來管理多任務。

linux系統實際運行當中,服務器有時會變得呆滯,運行緩慢,或者某個程序停止響應。那麼,在遇到上述情況如何處理或者應對呢?

進程的工作流程(原理)

linux系統啓動時,linux內核先將一些它自己的活動初始化爲進程,然後運行init程序。緊接着,init程序依次地運行一系列的shell 腳本(一般位於/etc目錄路徑),它們可啓動所有的系統服務。當然,許多系統服務將以守護(daemon)程序的形式出現,守護程序僅在後臺運行,即使linux系統沒有登錄,linux系統也會在後臺運行一些例行事務。

linux內核維護着所有進程的信息,以此來保持所有任務井然有序。

進程的查看--ps命令(靜態查看)

ps,全稱process status先簡單舉個例子來介紹ps 命令:

[root@linuxProbe ~]$ ps

PID    TTY     TIME         CMD

5198   pts/1    00:00:00      bash

10129   pts/1   00:00:00      ps

//表示有兩個進程,分別爲進程5198 和進程10129,各自對應的命令是bash命令和ps命令。

// TTY 全稱“Teletype”(直譯電傳打字機),進程的控制終端。

// TIME 字段表示進程所消耗的CPU的時間數量。

默認情況下,ps命令不會顯示更多的進程信息,僅僅是列舉與當前會話相關的進程信息。那麼爲了得到更多關於系統運行狀態的信息,我們需要將ps命令加上一些選項參數

[root@linuxprobe ~]$ ps x

PID   TTY   STAT  T ME  COMMAND

2799  ?     Ssl    0:00   /usr/libexec/bonobo-activation-server ac

2820  ?     Sl     0:01   /usr/libexec/evolution-data-server-1.10 –

//ps命令的常見參數以及作用如下表所示:

參數

作用

-a

顯示所有進程(包括其他用戶的進程)

-u

用戶以及其他詳細信息

-x

顯示沒有控制終端的進程

//STAT全稱“state”,代表了進程當前狀態,如下表所示:

狀態

代表含義

R(運行)

進程正在運行或在運行隊列中等待

S(中斷)

進程處於休眠中,當某個條件形成後或者接收到信號時,則脫離該狀態

D(不可中斷)

進程不響應系統異步信號,即便用kill命令也不能將其中斷

Z(僵死)

一個已經終止的子進程,但是它的父進程還沒有清空它。(父進程沒有把子進程從進程表中刪除)

T(停止)

已停止,進程收到停止信號後停止運行。

<

高優先級進程。這種狀態下,可能會授予進程更多、重要的資源,更多的CPU 時間數量。具有高優先級的進程據說是不好的(less nice),因爲它佔用了比較多的CPU 時間,這樣就給其它進程留下很少時間。

N

低優先級進程。只有當其它高優先級進程被服務了之後,纔會得到處理器時間。

除了上面7種常見的進程狀態,還有被鎖進內存(L)、包含子進程(s)以及多線程(l)這3種補充形式,在此不再一一描述了。

ps 命令能夠列舉許多運行狀態的詳細信息,弊端是它只能提供ps 命令執行時刻的機器狀態快照,也就是相對靜態的,不能實時滾動最新數據。

 

進程的查看--top命令(動態查看)

linux top命令能夠動態地查看其系統狀態,Linux就該這麼學》的作者劉遄在其書籍中寫道:完全可以將它看作是Linux強化版的Windows任務管理器。不容置疑,top命令確實一個相當好用的性能分析工具。

top命令執行結果的前5行,概況了系統整體的統計信息,其所代表的含義如下表所示:

行號

字段

意義

1

top

程序名

18:35:07

當前時間

up 36 min

這是正常運行時間。它是計算機從上次啓動到現在所運行的時間。這個例子顯示系統已經運行了36分鐘

1 user

有1個用戶登錄系統

load average

加載平均值是指,等待運行的進程數目,也就是說,處於可以運行狀態並共享CPU 的進程個數。這裏展示了三個數值,每個數值對應不同的時間段。第一個是最後0.01秒的平均值,下一個是前0.05的平均值,最後一個是前0.03的平均值。各項平均值都低於1.0,則表明運行狀態良好

2

Tasks

列舉了進程總數和這些進程的各種狀態(運行中的進程數、睡眠中的進程數、停止的進程數、僵死的進程數)

3

Cpu(s)

這一行描述了CPU 正在進行的活動的特性。依次代表的含義是用戶佔用資源百分比、系統內核佔用資源百分比、改變過優先級的進程資源百分比、空閒的資源百分比等。其中數據均爲CPU數據並以百分比格式顯示,例如“99.9 id”意味着有99.9%的CPU處理器資源處於空閒。

4

Mem

物理內存的使用情況(依次代表物理內存總量、內存空閒量、內存使用量、作爲內核緩存的內存量)

5

Swap

交換分區(虛擬內存)的使用情況(依次代表虛擬內存總量、虛擬內存空閒量、虛擬內存使用量、已被提前加載的內存量)

 

已經到深夜,關於linux系統中的進程的描述暫時描述到這裏,這篇文章詳細介紹了靜態查看ps命令和動態查看top命令,關於進程的介紹還有如何控制進程(中斷、停止等),下篇文章再補充吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章