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

roc_guo發表於2021-12-23

上篇文章詳細介紹了 命令程式透過獲取SHELL 環境中的資料(此處的資料通常稱為環境變數)來輸出本機相應的配置資料,從而掌握在LINUX SHELL 環境的搭建技巧。那麼,今天,這篇文章主要圍繞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 強化版的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 命令,關於程式的介紹還有如何控制程式(中斷、停止等),下篇文章再補充吧。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2848978/,如需轉載,請註明出處,否則將追究法律責任。

相關文章