【Shell】監控Linux系統中運行的進程

一、問題

1.1、環境
電腦環境:Windows 7;
開發工具:Eclipse 4.6.3;
數據庫環境:Oracle 11g;
JDK環境: Jdk1.8;
Maven環境:Maven3.5.0;
GIT版本:Version 2.48.02;
Docker版本:Server Version: 19.03.3
1.2、問題
在Linux系統中,如何監控程序,管理進程是必備的基本功;那麼如何查看和管理進程呢?本文主要講解通過ps查看進程,通過kill終止進程;通過top查看進程狀態
;通過df,du查看內存狀態等;

二、解答

ps命令是非常強大的進程管理命令,因爲ps命令曾經有兩個版本,支持3中不同風格(Unix帶單破折號,BSD不帶破折號,GNU帶雙破折號)的命令行參數,所以比較複雜;
1、默認的ps命令只會顯示基本的進程信息:
在這裏插入圖片描述
①、PID:PID(Process Identification)操作系統裏指進程識別號,也就是進程標識符。操作系統裏每打開一個程序都會創建一個進程ID,即PID。
②、PPID:PPID(parent process ID)父進程的ID;
③、PGID:PGID(Process Group ID 進程組 ID號)
④、WINPID:?
⑤、TTY:Teletypes,終端號
⑥、UID:(User Identify)中文用戶ID,相當於身份證一樣,在系統中是唯一的。
⑦、STIME:開始時間;
⑧、COMMAND:命令類型

所有命令展示截圖:

ps -a

在這裏插入圖片描述
ps -h 可以查看ps所有的命令,我這裏是Docker環境的shell,所以有些命令可能跟你用的操作系統不一樣;
在這裏插入圖片描述
查找某個進程的信息:

ps -ef|grep "ps"

在這裏插入圖片描述
然後我們可以看到其進程號;如果要殺掉這個進程,就可以用

kill -9 進程號

2、top命令:實時顯示進程的信息;在對於一些長時間不操作,就斷開鏈接的終端,如果使用top命令,就可以讓終端與服務器長連接,從而保證不斷開;
一般top會顯示如下信息:
①、PID:進程ID;
②、USER:用戶;
③、PR:進程的優先級;
④、NI:進程的謙讓程度;
⑤、VIRT:進程佔用的虛擬內存的總量;
⑥、RES:進程佔用的物理內存的總量;
⑦、SHR:進程和其他進程共享的內存總量;
⑧、S:進程的狀態,D可中斷;R在運行;S代表休眠;T代表跟蹤狀態或停止狀態;Z代表僵化狀態;
⑨、%CPU:進程使用的CPU時間比例;
⑩、%MEM:進程使用的內存佔可用內存的比例;
(11)、TIME+:自進程啓動到目前爲止的CPU時間總量;
(12)、COMMAND:進程對應的命令行名稱;

3、進程的結束
Linux中,進程通過信號來通信;下面有Linux的信號信息:

信號 名稱 描述
1 HUP 掛起
2 INT 中斷
3 QUIT 結束
9 KILL 終止
11 SEGV 段錯誤
15 TERM 儘可能終止
17 STOP 停止但不終止
18 TSTP 停止或暫停,在後臺運行
19 CONT STOP和TSTP後恢復執行

kill命令會給目標進程發送一個TERM信號;注意,只有你的用戶是進程的屬主或者root權限;

kill -s 可以根據信號名或信號值來殺掉進程;
killall 可以根據進程名而不是pid來結束進程,當然,這樣也非常危險,不建議使用;例如 killall http*表示殺死所有http服務;

4、df命令:查看磁盤空間;
在這裏插入圖片描述
但是這樣看,數字的位數很長,不方便管理者查看,我們可以使用df -h:
在這裏插入圖片描述
h表示human,意思是方便人讀的;

5、du命令:指定查看某個目錄的磁盤空間;格式是【du +空格+目錄路徑】
在這裏插入圖片描述
du -c :顯示所有文件的總大小;
du -h :方便人閱讀的磁盤空間大小;
du -s:顯示每個輸出參數的總計;

默認情況下,du顯示的是當前目錄的路徑;

三、總結

歡迎關注我的
CSDN博客: https://blog.csdn.net/River_Continent
微信公衆號:幕橋社區
在這裏插入圖片描述
* 知乎:張牧野, https://www.zhihu.com/people/zhang-mu-ye-37-76/activities
* 簡書: https://www.jianshu.com/u/02c0096cbfd3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章