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的使用率很高,而且平均負載也會很高。