Day - 22(進程管理2):

Day - 22(進程管理2):


一、管理進程狀態(tài)

1.當(dāng)程序運行為進程后,如果希望停止進程,怎么辦呢? 那么此時我們可以使用linux的kill命令對進程發(fā)送關(guān)閉信號。當(dāng)然除了kill、還有killall,pkill

2.命令:

1.kill

所有的選項:


常用的選項:


2.pkill、killall

用法: 用于殺死指定名字的進程。

二、管理后臺進程

1.后臺進程的概念:

通常進程都會在終端前臺運行,一旦關(guān)閉終端,進程也會隨著結(jié)束,那么此時我們就希望進程能在后臺運行,就是將在前臺運行的進程放入后臺運行,這樣及時我們關(guān)閉了終端也不影響進程的正常運行。

2.為什么要進進程放入后臺運行:

我們在傳輸大文件的時候,因為網(wǎng)絡(luò)的問題需要傳輸很久,如果在傳輸?shù)倪^程中出現(xiàn)網(wǎng)絡(luò)抖動或者不小心關(guān)閉了終端這回導(dǎo)致傳輸失敗,如果將傳輸?shù)倪M程放入后臺,就可以解決此類問題。

3.使用什么工具將進程放入后臺:

screen

用途:

開啟一個新的Bash窗口放入后臺執(zhí)行。

選項:

- S

指定名稱

- list

查看正在運行的screen有哪些

- r

進入指定名稱的screen

快捷鍵:

kill

結(jié)束screen

ctrl + a + d

將當(dāng)前的screen放入后臺執(zhí)行

ctrl + c + d

將飯錢打的screen結(jié)束并退出當(dāng)前的screen

三、進程的優(yōu)先級

1.什么是優(yōu)先級:

優(yōu)先級指的是優(yōu)先享受資源,比如排隊買票的時候,軍人優(yōu)先,老人優(yōu)先

2.為什么要有系統(tǒng)優(yōu)先級

可以讓系統(tǒng)中的比較重要的進程先執(zhí)行,提高系統(tǒng)的執(zhí)行效率(舉個例子:當(dāng)你去銀行取錢,前面有很多人在等待,如果此時來了一個VIP用戶他優(yōu)先級很高,這個用戶就可以直接向后服務(wù),不需要排隊)

3.系統(tǒng)中如何給進程配置優(yōu)先級

啟動進程前:

nice :

- n

指定優(yōu)先級數(shù)字,優(yōu)先級越小越優(yōu)先。(范圍:-20 - +19)

4.服務(wù)器假死狀態(tài):

服務(wù)器假死指的是:服務(wù)器的服務(wù)變得特別卡或者直接打不開的情況后,登錄不上去,或者是登錄上服務(wù)器后發(fā)現(xiàn)服務(wù)還在運行但是內(nèi)存被占滿,服務(wù)器拒絕訪問的情況。這種情況一般是由于開發(fā)的代碼混亂,進程和進程之間互相殺死子進程,然后又不斷產(chǎn)生新的子進程導(dǎo)致的占用率過高,運行緩慢。導(dǎo)致CPU占用率過高,不能響應(yīng)sshd服務(wù),導(dǎo)致登錄不了,可以通過在運行的環(huán)境腳本中提高sshd服務(wù)的優(yōu)先級等級,來使得遠程登錄的優(yōu)先局高于殺死進程的優(yōu)先級,就可以登錄進行檢查并排除故障了。

四、系統(tǒng)的平均負載

1.什么是平均負載:

平均負載是指單位時間內(nèi),系統(tǒng)處于可運行狀態(tài)和不可中斷狀態(tài)的平均進程數(shù),也就是平均活躍進程數(shù), PS: 平均負載與 CPU 使用率有關(guān)系也沒有關(guān)系。

平均負載其實就是單位時間內(nèi)的活躍進程數(shù)。

2.什么是可運行狀態(tài)和不可中斷狀態(tài):

可運行狀態(tài)進程,是指正在使用 CPU 或者正在等待 CPU 的進程,也就是我們ps 命令看到處于 R 狀態(tài)的進程。

不可中斷進程, 系統(tǒng)中最常見的是等待硬件設(shè)備的 I/O 響應(yīng),也就是我們 ps 命令中看到的 D 狀態(tài)(也稱為 Disk Sleep)的進程。

例如: 當(dāng)一個進程向磁盤讀寫數(shù)據(jù)時,為了保證數(shù)據(jù)的一致性,在得到磁盤回復(fù)前,它是不能被其他進程或者中斷打斷的,這個時候的進程就處于不可中斷狀態(tài)。如果此時使用kill -9強行的終止進程,就容易出現(xiàn)磁盤數(shù)據(jù)與進程數(shù)據(jù)不一致的問題(會打?qū)е路?wù)不能正常啟動)。所以,不可中斷狀態(tài)實際上是系統(tǒng)對進程和硬件設(shè)備的一種保護機制。

3.平均負載為多少的時候合適:

最理想的狀態(tài)是每個 CPU 上都剛好運行著一個進程,

這樣每個 CPU 都得到了充分利用。所以在評判平均負載時,首先你要知道系統(tǒng)有幾個CPU,

這可以通過 top 命令獲取,或grep 'model name' /proc/cpuinfo

舉例子:

假設(shè)現(xiàn)在在 4、2、1核的CPU上,如果平均負載為 2 時,意味著什么呢?

Q1.在4 個 CPU 的系統(tǒng)上,意味著 CPU 有 50% 的空閑。

Q2.在2 個 CPU 的系統(tǒng)上,意味著所有的 CPU 都剛好被完全占用。

Q3.而1 個 CPU 的系統(tǒng)上,則意味著有一半的進程競爭不到 CPU。

4.平均負載的三個數(shù)值的意義:

第一個數(shù)值值得是1分鐘內(nèi)的平均負載,第二個數(shù)值值得是5分鐘內(nèi)的平均負載,第三個指的是15分鐘內(nèi)的平均負載,根據(jù)這三個數(shù)值可以推算出近15分鐘內(nèi)服務(wù)器平均負載的趨勢。

5.平均負載與CPU使用率有什么關(guān)系:

CPU 密集型進程,使用大量 CPU 會導(dǎo)致平均負載升高,此時這兩者是一致的;

比如一個進程需要運算大量的數(shù)據(jù)就會打字CPU使用率飆升,也會導(dǎo)致平均負載身高

I/O 密集型進程,等待 I/O 也會導(dǎo)致平均負載升高,但 CPU 使用率不一定很高;

多個硬件請求發(fā)向CPU但是CPU不需要計算大量的數(shù)據(jù)所有CPU的使用率不一定很高,但是也會造成平均負載升高

大量等待 CPU 的進程調(diào)度也會導(dǎo)致平均負載升高,此時的 CPU 使用率也會比較高。

多個進程請求CPU的響應(yīng),但是CPU滿的響應(yīng)不過來,造成了大量的進程在等待,造成平均負載升高,此時不僅CPU的使用率很高,而且平均負載也會很高。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容