RH124-07 管理與監控Linux進程

第七章 管理與監控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查看幫出


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