第七章 管理與監控Linux進程
查看系統上運行的進程
使用jobs控制進程
發送信號結束和控制進程
監控資源使用情況和系統負載,調整進程優先級
7.1 進程
什麼是進程
瞭解進程狀態
查看進程列表
進程, 一個可執行的程序被執行之後的實例,包括:
分配內存的地址空間
進程的運行身份和權限的安全屬性
一個或多個線程
進程狀態
進程的運行環境,包括:
局部和全局變量
當前的調度上下文
已分配給進程使用的系統資源,例如文件描述符、網絡端口等
pid,ppid
一個進程可以在自己的地址空間內創建一個新的子進程,子進程可以繼承父進程的環境變量
每個進程都會有自己的進程id(pid),對應的父進程ID叫ppid.在rhel7裏,所有的進程都是由systemd這個父進程派生出來的子進程。
子進程在運行自己的程序代碼的時候,父進程往往會進入到睡眠狀態。
進程狀態: man 7 signal
R 進程運行
S 可中斷睡眠狀態
D 不可中斷睡眠狀態
K 可被結束的不可中斷睡眠狀態
Z 殭屍進程
X 進程已經退出
T 進程被暫停
列出進程:
ps aux
ps lax
ps -ef
7.2 使用jobs控制進程
前臺進程 firefox,後臺進程 frefox &
&
jobs 查看後臺進程,ps j
ctrl + Z 從前臺放到後臺並且暫停 , ctrl +c , ctrl + B
bg %id 從停止進入運行,fg
[student@localhost Desktop]$ sleep 1000 & 加一個後臺進程
[2] 5192
[student@localhost Desktop]$ jobs 查看所有後臺進程
[1]- Running firefox &
[2]+ Running sleep 1000 &
[student@localhost Desktop]$ fg %1 將1進程弄到前臺,ctrl +c後就關閉了火狐瀏覽器
=================================================
[student@localhost Desktop]$ fg //%2 將2進程放入後 臺
sleep 1000
^Z // ctrl + Z 從前臺放到後臺並且暫停
[2]+ Stopped sleep 1000
[student@localhost Desktop]$ jobs 查看
[2]+ Stopped sleep 1000
[3]- Running firefox &
[student@localhost Desktop]$ bg %2 //從停止進入運行
[2]+ sleep 1000 &
[student@localhost Desktop]$ jobs
[2]- Running sleep 1000 &
[3]+ Running fi
7.3 使用信號管理進程
學會使用kill命令發送信號與進程通信
定義守護進程的角色
結束用戶會話和進程
常見信號列表:
數字信號信號別名作用
1HUP掛起信號,往往可以讓進程重新配置
2INT中斷信號,起到結束進程的作用,和ctrl + c 的作用一樣
3QUIT讓進程退出,結果是進程退出
9KILL直接結束進程,不能被進程捕獲
15TERM進程終止,這是默認信號
18CONT被暫停的進程將繼續恢復運行
19STOP暫停進程
20TSTP用戶停止請求,作用類似於ctrl + z 把進程放到後臺並暫停
kill命令發送信號
kill PID
kill -signal PID
kill -l
killall 可以通過模糊匹配,同時給多個進程發送信號
$ killall command_pattern
$ killall -signal command_pattern
# killall -signal -u username command_pattern
pkill 類似killall
$ pkill command_pattern(命令可以模糊匹配)
$ pkill -signal command_pattern
# pkill -G GID command_pattern
# pkill -P PPID command_pattern
# pkill -t terminal_name -U UID command_pattern
w -f 查看系統上的所有用戶會話情況, -f 輸出用戶來自哪裏
pgrep -l -u bob 列出bob用戶的所有進程,-l輸出pid
w -h -u 查看bob用戶會話情況
pkill -t tty3 把tty3終端下的所有進程結束,除了bash本身
pkill -9 -t tty3 把tty3終端下的所有進程結束,並且bash也結束(用戶被強制退出)
pstree -p bob 列出所有屬於bob的進程樹,-p輸出pid
pkill -P pid 匹配所有父進程pid(ppid)爲該pid的所有進程
7.4 監控進程活動
系統負載的計算和意義
進程以及子進程和線程產生的計算指令都會讓cpu執行,產生請求的這些進程組成"運行隊列",等待cpu執行,這個隊列就是系統負載
系統負載是所有cpu的運行隊列的總和.
假設當前計算機有4個核心的cpu,當前的負載是 2.92 // 平均下來是2.92個進程被處理
cpu1cpu2cpu3cpu4
2.94/4(個cpu核心) = 73%的cpu資源被使用,剩下27%的cpu計算資源是空想的
假設當前的計算有2個核心的cpu,當前的負載是2.92
2.92/2 = 146% 已經驗證超過了cpu的處理能力
top
常見指令
h查看幫出
1輸出每個cpu的使用情況 再按一下就不輸出
s設置刷新時間
b高亮現實處於R狀態的進程
M按內存使用百分比排序輸出
P按CPU使用百分比排序輸出
kkill掉指定PID進程
q退出
h查看幫出
========================================================================================
網上找的內容:
A,Shell支持作用控制,有以下命令:
1. command& 讓進程在後臺運行
2. jobs 查看後臺運行的進程
3. fg %n 讓後臺運行的進程n到前臺來
4. bg %n 讓進程n到後臺去;
PS:"n"爲jobs查看到的進程編號.
B. 命令詳解
fg、bg、jobs、&、ctrl + z都是跟系統任務有關的,雖然現在基本上不怎麼需要用到這些命令,但學會了也是很實用的
一。& 最經常被用到
這個用在一個命令的最後,可以把這個命令放到後臺執行
二。ctrl + z
可以將一個正在前臺執行的命令放到後臺,並且暫停
三。jobs
查看當前有多少在後臺運行的命令
四。fg
將後臺中的命令調至前臺繼續運行
如果後臺中有多個命令,可以用 fg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的後臺正在執行的命令的序號(不是pid)
五。bg
將一個在後臺暫停的命令,變成繼續執行
如果後臺中有多個命令,可以用bg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的後臺正在執行的命令的序號(不是pid)
#Linux下使用Shell命令控制任務Jobs執行
下列命令可以用來操縱進程任務:
ps 列出系統中正在運行的進程;
kill 發送信號給一個或多個進程(經常用來殺死一個進程);
jobs 列出當前shell環境中已啓動的任務狀態,若未指定jobsid,則顯示所有活動的任務狀態信息;如果報告了一個任務的終止(即任務的狀態被標記爲Terminated),shell 從當前的shell環境已知的列表中刪除任務的進程標識;
bg 將進程搬到後臺運行(Background);
fg 將進程搬到前臺運行(Foreground);
7.4 監控進程活動 筆記
uptime 告訴我們開了幾個小時,當前時間,有幾個用戶,平均負載 1 5 15分鐘的平均負載
如何查看CPU
[student@localhost Desktop]$ cat /proc/cpuinfo
[student@localhost Desktop]$ grep "model name" /proc/cpuinfo
model name: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz
model name: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz
top
top - 20:16:13 up 3:03, 2 users, load average: 0.00, 0.02, 0.05
Tasks: 476 total, 3 running, 472 sleeping, 1 stopped, 0 zombie殭屍進程
%Cpu(s): 4.2 us, 1.5 sy, 0.0 ni, 94.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 1003456 total, 935516 used, 67940 free, 400 buffers
KiB Swap: 0 total, 0 used, 0 free. 266436 cached Mem 虛擬內存,即交換分區,物理內存不足時會佔用
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 按CPU的使用百分比來輸出的。
1028 root 20 0 207060 37700 8252 R 5.9 3.8 0:24.00 Xorg
2356 student 20 0 1566812 166876 37648 S 4.0 16.6 3:10.96 gnome-she+
2711 student 20 0 619712 18672 12164 S 3.3 1.9 0:05.22 gnome-ter+
5965 student 20 0 123920 1920 1148 R 0.7 0.2 0:00.33 top
top
常見指令
h查看幫出
1輸出每個cpu的使用情況 再按一下就不輸出
s設置刷新時間
b高亮現實處於R狀態的進程
M按內存使用百分比排序輸出
P按CPU使用百分比排序輸出
kkill掉指定PID進程
q退出
h查看幫出