監控和管理linux進程
1、什麼是進程以及如何查看進程
進程是已啓動的可執行程序的運行中的實例。進程有以下組成部分:已分配的內存地址空間;安全屬性;程序代碼的一個或多個執行線程;進程狀態。
進程狀態:運行中 R;睡眠 S D K;已停止 T;僵停 Z X
如何列出進程
ps aux 顯示所有進程,包含用戶感興趣的列,以及沒有控制終端的進程
ps lax 提供更多技術詳細信息
ps -ef 顯示所有進程
top 追蹤顯示進程
pstree 樹形格式顯示,可查看父子關係
ps 若不使用選項,將選擇有與當前用戶相同UID並與調用ps所處同一終端關聯的所有進程
2、作業和會話
作業控制是一種命令shell功能,允許單個shell實例運行和管理多個命令。沒有作業控制時,父級shell分出子進程以運行命令,保持睡眠狀態直到子進程退出。
前臺進程是在終端窗口中運行的命令。
後臺進程是以無終端的形式啓動的,因爲它不需要終端交互。在ps列表中,此類進程將在TTY列種顯示一個?。
任務命令都可以在後臺啓動,只需在命令行中附加&符號。bash shell顯示作業編號和新的子進程的PID。
jobs 查看作業
ps j 顯示作業信息
fg %job number 將後臺作業置於前臺
bg %job number 在後臺重新啓動作業
3、中斷進程
信號是專遞至進程的軟件中斷。信號向執行中的程序報告事件。生成的信號的事件可以是錯誤或外部事件,或者來自於明確請求(如使用信號發送命令或鍵盤序列)。
信號編號 名稱 定義 用途
1 HUP 掛起 用於報告終端控制進程的終止,也用於進程重新初始化
2 INT 鍵盤中斷 導致程序終止,可被攔截和處理。ctrl-c發送
3 QUIT 鍵盤退出 通過ctrl-\發送
9 KILL 中斷 立即終止程序,無法被攔截、忽略或處理
15 TERM 終止 導致程序終止,可以被攔截、忽略或處理
18 CONT 繼續 發送至進程使其恢復(若已停止)
19 STOP 停止 暫停進程,無法被攔截或處理
20 TSTP 鍵盤停止 可以被攔截、忽略或處理,通過ctrl-z發送
用戶向當前的前臺進程發送信號,具體操作爲鍵入鍵盤控制序列以暫停(ctrl-z)、中斷(ctrl-c)或核心轉儲(ctrl-\)該進程。
向後臺進程或另一會話中的進程發送信號,需要使用信號發送命令。
kill命令根據ID向進程發送命令,該命令可用於發送任何信號,而不僅僅是終止程序。
kill -signal PID 或者直接輸入信號編號(如-9)
killall -signal command_patten
killall -signal -u username command_patten
pkill -signal -G GID command_patten
pkill -signal -P PID command_patten
pkill -signal -t terminal_name -U UID command_patten
4、監控進程活動
負載平均值:負載平均值是負載計算例程的結果。整體而言,它指的是最近1分鐘、5分鐘和15分鐘內系統活動數據的三個顯示值的平均值。
如何顯示負載平均值
w
top
uptime
gnome-system-monitor
負載平均值除以系統中的邏輯cpu數,值低於1表示資源利用率較好,等待時間很短;值高於1表示資源飽和,而且有一定的服務等待時間。
top是系統進程的動態視圖,顯示摘要標題,以及與ps信息類似的進程或線程列表。
基本操作
?或h 交互式操作幫助
1、t、m 切換到負載、線程和內存標題
1 標題中切換顯示單獨cpu信息或所有cpu彙總
u、U 交互式篩選過濾用戶
M 按內存使用率,以降序排序
P 按處理器使用率,以降序排序
q 退出