day21-進(jìn)程管理2

1.管理進(jìn)程狀態(tài)

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

  • 1.使用kill -l列出當(dāng)前系統(tǒng)所支持的信號



    雖然linux支持信號很多混狠,但是我們僅列出我們最為常用的3個(gè)信號

數(shù)字編號 信號含義 信號翻譯
1 SIGHUP 通常用來重新加載配置文件
9 SIGKILL 強(qiáng)制殺死進(jìn)程
15 SIGTERM 終止進(jìn)程将饺,默認(rèn)kill使用該信號

1.我們使用kill予弧、pkill命令殺死指定PID的進(jìn)程湖饱。

[root@localhost ~]# ps aux | grep nginx
root       6885  0.0  0.2  46440   980 ?        Ss   08:31   0:00 nginx: master process nginx
nginx      6887  0.0  0.4  46852  2176 ?        S    08:31   0:00 nginx: worker process
root      10490  0.0  0.2 112708   976 pts/0    R+   17:08   0:00 grep --color nginx
[root@localhost ~]# kill 6885
[root@localhost ~]# ps aux | grep nginx
root      10520  0.0  0.2 112708   976 pts/0    S+   17:08   0:00 grep --color nginx

2.Linux系統(tǒng)中的killall、pkill命令用于殺死指定名字的進(jìn)程器赞。我們可以使用kill命令殺死指定進(jìn)程PID的進(jìn)程,如果要找到我們需要?dú)⑺赖倪M(jìn)程,我們還需要在之前使用ps等命令再配合grep來查找進(jìn)程畔柔,而killall、pkill把這兩個(gè)過程合二為一秸仙,是一個(gè)很好用的命令。

---------使用pkill--------
[root@localhost ~]# ps aux | grep nginx
root      10536  0.0  0.2  46440   980 ?        Ss   17:10   0:00 nginx: master process nginx
nginx     10538  0.0  0.4  46852  1936 ?        S    17:10   0:00 nginx: worker process
root      10553  0.0  0.2 112708   972 pts/0    R+   17:10   0:00 grep --color nginx
[root@localhost ~]# pkill nginx
[root@localhost ~]# ps aux | grep nginx
root      10584  0.0  0.2 112708   976 pts/0    S+   17:10   0:00 grep --color nginx

---------使用killall--------
[root@localhost ~]# ps aux | grep nginx
root      10536  0.0  0.2  46440   980 ?        Ss   17:10   0:00 nginx: master process nginx
nginx     10538  0.0  0.4  46852  1936 ?        S    17:10   0:00 nginx: worker process
root      10553  0.0  0.2 112708   972 pts/0    R+   17:10   0:00 grep --color nginx
[root@localhost ~]# killall nginx
[root@localhost ~]# ps aux | grep nginx
root      10584  0.0  0.2 112708   976 pts/0    S+   17:10   0:00 grep --color nginx

2.管理后臺進(jìn)程

1.什么是后臺進(jìn)程

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

2.我們?yōu)槭裁匆獙⑦M(jìn)程放入后臺運(yùn)行

  • 比如:我們此前在國內(nèi)服務(wù)器往國外服務(wù)器傳輸大文件時(shí),由于網(wǎng)絡(luò)的問題需要傳輸很久,如果在傳輸?shù)倪^程中出現(xiàn)網(wǎng)絡(luò)抖動或者不小心關(guān)閉了終端則會導(dǎo)致傳輸失敗,如果能將傳輸?shù)倪M(jìn)程放入后臺苞也,是不是就能解決此類問題了。

3.使用什么工具將進(jìn)程放入后臺

  • 早期的時(shí)候大家都選擇使用&符號將進(jìn)程放入后臺,然后在使用jobs、bg、fg等方式查看進(jìn)程狀態(tài),但太麻煩了草讶。也不直觀拍霜,所以我們推薦使用screen嘱丢。

4.screen的使用(強(qiáng)烈推薦,生產(chǎn)必用)

#1.開啟一個(gè)screen窗口,指定名稱
[root@localhost ~]# screen -S wget
[screen is terminating]

#2.在screen窗口中執(zhí)行任務(wù)即可

#4.ctrl+a+d 平滑的退出screen,但不會終止screen中的任務(wù)祠饺。
注意: 如果使用exit或者ctrl+d(先使用ctrl+c)才算真的關(guān)閉screen窗口


#5.查看當(dāng)前正在運(yùn)行的screen有哪些
[root@localhost ~]# screen -list
There is a screen on:
    10667.wget  (Detached)
1 Socket in /var/run/screen/S-root.
#6.進(jìn)入正在運(yùn)行的screen
[root@localhost ~]# screen -r
 wget

3.進(jìn)程的優(yōu)先級[進(jìn)階]

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

  • 優(yōu)先級指的是優(yōu)先享受資源道偷,比如排隊(duì)買票時(shí)换途,軍人優(yōu)先忠蝗、老人優(yōu)先戒祠。等等

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

  • 舉個(gè)例子: 海底撈火鍋正常情況下響應(yīng)就特別快,那么當(dāng)節(jié)假日來臨時(shí)人員突增則會導(dǎo)致處理請求特別慢速种,那么假設(shè)我是海底撈VIP客戶(最高優(yōu)先級)馏颂,無論門店多么繁忙,我都不用排隊(duì)棋傍,海底撈人員會直接服務(wù)于我救拉,滿足我的需求。至于沒有VIP的人員(較低優(yōu)先級)則進(jìn)入排隊(duì)等待狀態(tài)瘫拣。(PS: 至于等多久亿絮,那.....)

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

  • 在啟動進(jìn)程時(shí),為不同的進(jìn)程使用不同的調(diào)度策略麸拄。
    nice 值越高: 表示優(yōu)先級越低派昧,例如+19,該進(jìn)程容易將CPU 使用量讓給其他進(jìn)程拢切。
    nice 值越低: 表示優(yōu)先級越高蒂萎,例如-20,該進(jìn)程更不傾向于讓出CPU淮椰。

1.使用top或ps命令查看進(jìn)程的優(yōu)先級

#1.使用top可以查看nice優(yōu)先級五慈。  NI: 實(shí)際nice級別,默認(rèn)是0主穗。 PR: 顯示nice值泻拦,-20映射到0,+19映射到39
PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
1083 root      20   0  298628   2808   1544 S  0.3  0.1   2:49.28 vmtoolsd
5    root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:+

#2.使用ps查看進(jìn)程優(yōu)先級
[root@localhosts ~]# ps axo command,nice |grep sshd|grep -v grep
/usr/sbin/sshd -D             0
sshd: root@pts/2              0

2.nice指定程序的優(yōu)先級黔牵。語法格式 nice -n 優(yōu)先級數(shù)字 進(jìn)程名稱

#1.開啟vim并且指定程序優(yōu)先級為-5
[root@m01 ~]# nice -n -5 vim &
[1] 98417

#2.查看該進(jìn)程的優(yōu)先級情況
[root@localhosts ~]# ps axo pid,command,nice |grep 98417
 98417 vim                         -5

3.renice命令修改一個(gè)正在運(yùn)行的進(jìn)程優(yōu)先級。語法格式 renice -n 優(yōu)先級數(shù)字 進(jìn)程pid

#1.查看sshd進(jìn)程當(dāng)前的優(yōu)先級狀態(tài)
[root@m01 ~]# ps axo pid,command,nice |grep 折疊shd
 70840 sshd: root@pts/2              0
 98002 /usr/sbin/sshd -D             0
 
#2.調(diào)整sshd主進(jìn)程的優(yōu)先級
[root@localhosts ~]# renice -n -20 98002
98002 (process ID) old priority 0, new priority -20

#3.調(diào)整之后記得退出終端
[root@localhosts ~]# ps axo pid,command,nice |grep 折疊shd
 70840 sshd: root@pts/2              0
 98002 /usr/sbin/sshd -D           -20
[root@localhosts ~]# exit

#4.當(dāng)再次登陸sshd服務(wù)爷肝,會由主進(jìn)程fork子進(jìn)程(那么子進(jìn)程會繼承主進(jìn)程的優(yōu)先級)
[root@localhosts ~]# ps axo pid,command,nice |grep 折疊shd
 98002 /usr/sbin/sshd -D           -20
 98122 sshd: root@pts/0            -20

4.系統(tǒng)平均負(fù)載[進(jìn)階]

每次發(fā)現(xiàn)系統(tǒng)變慢時(shí)猾浦,我們通常做的第一件事陆错,就是執(zhí)行 top 或者 uptime 命令,來了解系統(tǒng)的負(fù)載情況金赦。比如像下面這樣音瓷,我在命令行里輸入了 uptime 命令,系統(tǒng)也隨即給出了結(jié)果夹抗。

[root@localhosts ~]# uptime
 04:49:26 up 2 days,  2:33,  2 users,  load average: 0.70, 0.04, 0.05
#我們已經(jīng)比較熟悉前面幾列绳慎,它們分別是當(dāng)前時(shí)間、系統(tǒng)運(yùn)行時(shí)間以及正在登錄用戶數(shù)漠烧。

# 而最后三個(gè)數(shù)字呢杏愤,依次則是過去 1 分鐘、5 分鐘已脓、15 分鐘的平均負(fù)載(Load Average)珊楼。

平均負(fù)載案例分析實(shí)戰(zhàn)

下面,我們以三個(gè)示例分別來看這三種情況度液,并用 stress厕宗、mpstat、pidstat 等工具堕担,找出平均負(fù)載升高的根源已慢。
stress 是 Linux 系統(tǒng)壓力測試工具,這里我們用作異常進(jìn)程模擬平均負(fù)載升高的場景霹购。
mpstat 是多核 CPU 性能分析工具佑惠,用來實(shí)時(shí)查看每個(gè) CPU 的性能指標(biāo),以及所有 CPU 的平均指標(biāo)厕鹃。
pidstat 是一個(gè)常用的進(jìn)程性能分析工具兢仰,用來實(shí)時(shí)查看進(jìn)程的 CPU、內(nèi)存剂碴、I/O 以及上下文切換等性能指標(biāo)把将。

#如果出現(xiàn)無法使用mpstat、pidstat命令查看%wait指標(biāo)建議更新下軟件包
wget http://pagesperso-orange.fr/sebastien.godard/sysstat-11.7.3-1.x86_64.rpm
rpm -Uvh sysstat-11.7.3-1.x86_64.rpm

場景一:CPU 密集型進(jìn)程

------1.首先忆矛,我們在第一個(gè)終端運(yùn)行 stress 命令察蹲,模擬一個(gè) CPU 使用率 100% 的場景:------
[root@localhosts ~]# stress --cpu 1 --timeout 600

------2.接著,在第二個(gè)終端運(yùn)行 uptime 查看平均負(fù)載的變化情況-----
# 使用watch -d 參數(shù)表示高亮顯示變化的區(qū)域(注意負(fù)載會持續(xù)升高)
[root@m01 ~]# watch -d uptime
17:27:44 up 2 days,  3:11,  3 users,  load average: 1.10, 0.30, 0.17

------3.最后催训,在第三個(gè)終端運(yùn)行 mpstat 查看 CPU 使用率的變化情況-------
# -P ALL 表示監(jiān)控所有 CPU洽议,后面數(shù)字 5 表示間隔 5 秒后輸出一組數(shù)據(jù)
[root@localhosts ~]# mpstat -P ALL 5
Linux 3.10.0-957.1.3.el7.x86_64 (m01)   2019年04月29日     _x86_64_    (1 CPU)

17時(shí)32分03秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
17時(shí)32分08秒  all   99.80    0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00    0.00
17時(shí)32分08秒    0   99.80    0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00    0.00

#單核CPU所以只有一個(gè)all和0

4.從終端二中可以看到,1 分鐘的平均負(fù)載會慢慢增加到 1.00漫拭,而從終端三中還可以看到亚兄,正好有一個(gè) CPU 的使用率為 100%,但它的 iowait 只有 0采驻。這說明审胚,平均負(fù)載的升高正是由于 CPU 使用率為 100% 匈勋。那么,到底是哪個(gè)進(jìn)程導(dǎo)致了 CPU 使用率為 100% 呢膳叨?可以使用 pidstat 來查詢

# 間隔 5 秒后輸出一組數(shù)據(jù)
[root@localhosts ~]# pidstat -u 5 1
Linux 3.10.0-957.1.3.el7.x86_64 (m01)   2019年04月29日     _x86_64_(1 CPU)

17時(shí)33分21秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
17時(shí)33分26秒     0    110019   98.80    0.00    0.00   98.80     0  stress

#從這里可以明顯看到洽洁,stress 進(jìn)程的 CPU 使用率為 100%。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末菲嘴,一起剝皮案震驚了整個(gè)濱河市饿自,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌龄坪,老刑警劉巖昭雌,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異悉默,居然都是意外死亡城豁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門抄课,熙熙樓的掌柜王于貴愁眉苦臉地迎上來唱星,“玉大人,你說我怎么就攤上這事跟磨〖淞模” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵抵拘,是天一觀的道長哎榴。 經(jīng)常有香客問我,道長僵蛛,這世上最難降的妖魔是什么尚蝌? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮充尉,結(jié)果婚禮上飘言,老公的妹妹穿的比我還像新娘。我一直安慰自己驼侠,他們只是感情好姿鸿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著倒源,像睡著了一般苛预。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上笋熬,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天热某,我揣著相機(jī)與錄音,去河邊找鬼。 笑死昔馋,一個(gè)胖子當(dāng)著我的面吹牛芜繁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绒极,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蔬捷!你這毒婦竟也來了垄提?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤周拐,失蹤者是張志新(化名)和其女友劉穎铡俐,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妥粟,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡审丘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了勾给。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滩报。...
    茶點(diǎn)故事閱讀 40,137評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖播急,靈堂內(nèi)的尸體忽然破棺而出脓钾,到底是詐尸還是另有隱情,我是刑警寧澤桩警,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布可训,位于F島的核電站,受9級特大地震影響捶枢,放射性物質(zhì)發(fā)生泄漏握截。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一烂叔、第九天 我趴在偏房一處隱蔽的房頂上張望谨胞。 院中可真熱鬧,春花似錦长已、人聲如沸畜眨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽康聂。三九已至,卻和暖如春胞四,著一層夾襖步出監(jiān)牢的瞬間恬汁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工辜伟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留氓侧,地道東北人脊另。 一個(gè)月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像约巷,于是被迫代替她去往敵國和親偎痛。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容