Linux運維之程式管理①

雷神的錘發表於2020-11-07

1、程式概念

①程式是作業系統最核心的概念,那什麼是程式? 

程式就是正在執行中的程式,資源單位。

②執行緒

程式內程式碼的執行過程,執行緒是CPU的執行單位,一個程式至少有一個執行緒

 

一個程式的多個執行緒共享該程式的記憶體資源。

不同程式的多個執行緒的記憶體資源是相互隔離的

 

③那什麼是程式?

程式就是一堆程式碼檔案

④核心態和使用者態

核心態:程式執行的過程

使用者態:作業系統控制著硬體去執行程式的過程

⑤併發與並行

並行:多個程式看起來是同時執行的,事實上是cup利用時間、空間碎片快速在多個程式之間快速切換,給人的感            覺就是多個程式在同時執行

併發:多個程式真正意義上的同時執行,只有多核心才能實現

強調:CPU是執行程式碼,而不是做io

⑥任務執行的三種狀態

執行態、 就緒態、 阻塞態

⑦提交任務的兩種方式

同步、 非同步

二、檢視程式資訊

[root@@321 ~]# ps aux   (檢視程式池)
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 125432  3860 ?        Ss   08:39   0:01 /usr/lib/systemd/systemd --sw
root          2  0.0  0.0      0     0 ?        S    08:39   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    08:39   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   08:39   0:00 [kworker/0:0H]
STAT:程式狀態

R:執行狀態                          S:可中斷睡眠狀態

D:不可中斷睡眠狀態            T:暫停狀態

z :殭屍程式                           x:死掉的程式(幾乎看不到,很快會被作業系統回收掉)

>:>代表優先順序較高的程式    n:n帶表優先順序較低的程式

s:包含子程式                         +:+表示的是前臺的程式組

Linux程式有兩種睡眠狀態

Intreeuptible Sleep (可中斷睡眠,在ps命令中顯示“s”)

處在這種睡眠狀態的程式是可以通過給它傳送signal來喚醒的,比如HUP訊號給nginx的master程式可以讓nginx重新載入配置檔案而不需要重新啟動nginx程式。

Unintreeuptible Sleep (不可中斷睡眠,在ps命令中顯示“D”)

處在這種狀態的程式不接受外來的任何signal,這也是為何無法用kill殺掉處於D狀態的程式,無論是“kill”、“kill -9”

、“kill -15”還是“Ctrl+c”、“Ctrl +z”都無濟於事,因為它們壓根就不受這些訊號的支配。

檢視程式樹 : pstree PID號

檢視PPID:ps -elf PPID號

動態檢視:top -d 1 (一秒重新整理一次)

                  top -d 1 -p (程式的PID)

                  top -d 1 -u nginx (檢視指定使用者的程式) 

                  top -b -n 2 > a.txt  (將兩次重新整理資訊寫到檔案)

顯示資訊解釋

top - 19:37:01 up 10:57,  2 users,  load average: 0.00, 0.01, 0.05

第一部分系統整體統計時間

up左邊:當前系統時間

up右邊:系統從開機到現在的執行時間

 load average: 0.00, 0.01, 0.05  : CPU的1分鐘、5分鐘、15分鐘的平均負載

 

%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
us:使用者態佔用CPU時間的百分比

sy:核心態佔用CPU時間的百分比

ni:代表優先被排程的程式佔CPU時間的百分比

id:CPU空閒百分比

wa:CPU等待io的百分比

hi:硬體終端,處理硬體中斷所佔用的CPU時間

si:軟體中斷,處理軟體中斷所佔用的CPU時間

st:被偷走的CPU

中斷是系統用來影響硬體裝置請求的一種機制,它會打斷程式的正常排程和執行,然後呼叫核心中的終端處理程式來影響裝置的請求

ps:中斷是一個非同步的事件處理機制,可以提高作業系統處理併發的能力。

三、top命令

top的執行過程中可以通過top內部命令對程式的顯示方式進行控制,top內部命令如下

M:按記憶體的使用排序

P:按CPU的使用排序

N:按PID的大小排序

R:對排序進行反轉

f自定義顯示欄位

1:顯示所有CPU的負載情況

s:改變畫面更新頻率

h |?幫助

<:向前

>:向後

z:色彩

命令列選項:

top -d 重新整理時間s -p pid #只看某一個程式的資訊

top -d 重新整理時間s -u 使用者 #只檢視該使用者開啟的所有程式資訊

四、調整程式的優先順序

r調整程式的優先順序

優先順序的等級範圍是-20~19,其中數值越低優先順序越高,數值越高優先順序越低,優先順序最高為-20,最低為19

需要注意:普通使用者只能在0~19之間調整應用程式的優先順序,只有超級使用者有許可權調整更高的優先權(-20~19)

kill訊號管理

1:重新載入

2:中斷程式,類似於Ctrl+c

3:正常終止程式

9:強制殺死程式

15:預設訊號,終止程式

18:被暫停的程式將繼續回覆執行

19:暫停程式

20:停止程式執行

命令示例:

[root@@321 ~]# kill -9 9813  (9813為程式的PID號)

pkill:

-t:指定終端

-9:強制,把終端執行的命令和終端一起殺掉

 

 

 

 

 

       

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相關文章