自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux下的進(jìn)程管理

系統(tǒng) Linux
在操作系統(tǒng)系統(tǒng)中,進(jìn)程是一個(gè)非常重要的概念。通俗的來(lái)說(shuō)進(jìn)程是運(yùn)行起來(lái)的程序。唯一標(biāo)示進(jìn)程的是進(jìn)程描述符(PID),在linux內(nèi)核中是通過task_struck和task_list來(lái)定義和管理進(jìn)程的。

在操作系統(tǒng)系統(tǒng)中,進(jìn)程是一個(gè)非常重要的概念。

一、Linux中進(jìn)程的相關(guān)知識(shí)

1、什么是進(jìn)程呢?

通俗的來(lái)說(shuō)進(jìn)程是運(yùn)行起來(lái)的程序。唯一標(biāo)示進(jìn)程的是進(jìn)程描述符(PID),在linux內(nèi)核中是通過task_struck和task_list來(lái)定義和管理進(jìn)程的。

2、進(jìn)程的分類

1)根據(jù)在linux不同模式下運(yùn)行分為:

核心態(tài):這類進(jìn)程運(yùn)行在內(nèi)核模式下,執(zhí)行一些內(nèi)核指令(Ring 0)。

用戶態(tài):這類進(jìn)程工作在用戶模式下,執(zhí)行用戶指令(Ring 3)。

如果用戶態(tài)的進(jìn)程要執(zhí)行一些核心態(tài)的指令,此時(shí)就會(huì)產(chǎn)生系統(tǒng)調(diào)用,系統(tǒng)調(diào)用會(huì)請(qǐng)求內(nèi)核指令完成相關(guān)的請(qǐng)求,就執(zhí)行的結(jié)果返回給用戶態(tài)進(jìn)程。

2)按照進(jìn)程的狀態(tài)可分為:

運(yùn)行態(tài):running 正在運(yùn)行的進(jìn)程

可中斷睡眠態(tài):進(jìn)程處于睡眠狀態(tài),但是可以被中斷

不可中斷的睡眠態(tài):進(jìn)程處于睡眠狀態(tài),但是不可以被中斷

停止態(tài):stoped 不會(huì)被內(nèi)核調(diào)度

僵死態(tài):zombie產(chǎn)生的原因是進(jìn)程結(jié)束后,它的父進(jìn)程沒有wait它,所導(dǎo)致的。

3)按照操作的密集程度

CPU密集型:進(jìn)程在運(yùn)行時(shí),占用CPU時(shí)間較多的進(jìn)程。

I/O密集型:進(jìn)程在運(yùn)行時(shí),占用I/O時(shí)間較多的進(jìn)程。

通常情況下,I/O密集型的優(yōu)先級(jí)要高于CPU密集型。

4)按照進(jìn)程的處理方式

批處理進(jìn)程:

交互式進(jìn)程:

實(shí)時(shí)進(jìn)程:

3、進(jìn)程的優(yōu)先級(jí)

進(jìn)程的有優(yōu)先級(jí),是用0-139數(shù)字來(lái)表示的,數(shù)字優(yōu)先級(jí)從小到大依次是:0-99,139-100。

優(yōu)先級(jí)分為2類:

實(shí)時(shí)優(yōu)先級(jí):0-99,是由內(nèi)核維護(hù)的

靜態(tài)優(yōu)先級(jí):100-139,可以使用nice來(lái)調(diào)整,nice值的取值范圍是[-20,19),分別對(duì)應(yīng)100到139。nice默認(rèn)值是0。

動(dòng)態(tài)優(yōu)先級(jí):由內(nèi)核動(dòng)態(tài)維護(hù),動(dòng)態(tài)調(diào)整。

二、進(jìn)程的管理工具

1、pstree命令 查看進(jìn)程數(shù)。 常用用法如下:

wKioL1PLqdyyIb19AAEMNH_9wPY525.jpg

#p#

2、ps 命令 查看進(jìn)程的相關(guān)狀態(tài)。支持SysV和BSD兩種風(fēng)格的選項(xiàng)。

常用選型:

a 與終端相關(guān)的進(jìn)程

x 與終端無(wú)關(guān)的進(jìn)程

u 顯示運(yùn)行進(jìn)程的用戶

常用組合選項(xiàng):ps aux

wKiom1PLsWrBbbpGAAMO4REz0So556.jpg

  1. # 下面分別來(lái)說(shuō)明上圖的各個(gè)字段的含義  
  2. # USER 進(jìn)程以什么用戶身份運(yùn)行  
  3. # PID 進(jìn)程描述符 具有唯一性  
  4. # %CPU 進(jìn)程運(yùn)行時(shí)所占的cpu百分比  
  5. # %MEM 進(jìn)程運(yùn)行時(shí)內(nèi)存所占的百分比  
  6. # VSZ Virtual memory SiZe 虛擬內(nèi)存使用大小  
  7. # RSS 常駐內(nèi)存集,所有不能被置換出去的內(nèi)存集  
  8. # STAT 表示內(nèi)存狀態(tài)  
  9. # 常用的狀態(tài)有:  
  10. # S:可中段睡眠狀態(tài)  
  11. # R:運(yùn)行態(tài)  
  12. # D:不可中斷睡眠態(tài)  
  13. # T:停止態(tài)  
  14. # Z:僵尸態(tài)  
  15. # s:session leader 所謂進(jìn)程的領(lǐng)導(dǎo)者  
  16. # +:表示是前臺(tái)進(jìn)程  
  17. # l:多線程進(jìn)程  
  18. # N:低優(yōu)先級(jí)進(jìn)程  
  19. <:高優(yōu)先級(jí)進(jìn)程  
  20. # TTY 用來(lái)表示終端 顯示為“?”的說(shuō)明是與終端無(wú)關(guān)的進(jìn)程  
  21. # START 進(jìn)程開始時(shí)間  
  22. # TIME 進(jìn)程運(yùn)行時(shí)間  
  23. # COMMAND 執(zhí)行進(jìn)程的命令 如果命令被 "[]"包圍,說(shuō)明是內(nèi)核線程 

-e 顯示所有進(jìn)程

-f 顯示完成格式信息

常組合在一起使用:ps -ef

wKiom1PLtv3AM8G8AAIzFXcrn_M342.jpg

但是有些這種情況下,我們的命令有時(shí)候顯示不完整

wKioL1PLt_HRegDWAAFNVp3t6Hw292.jpg

此時(shí)想要顯示完成就要 ps -efww

wKioL1PLuLPhBEpsAAIah-16qRE706.jpg

-F:顯示額外信息 

-H:顯示進(jìn)程的層次結(jié)構(gòu)

常用組合方式:ps -eFH

wKiom1PLuWaShIYVAAHLO4AzcZA175.jpg

可能以后我們用到最多的選項(xiàng):

-o 我們可以自定義顯示字段

  1. # 常用的有:  
  2. # pid command psr pri ni %cpu %mem rsz vsz等 

wKioL1PLvOPC-vh8AAEWrtgKOts189.jpg

#p#

3、pgrep,pidof

pgrep 常用選型:

-U 查看指定用戶的進(jìn)程號(hào)

-G 查看指定用戶組的進(jìn)程號(hào)

-l 顯示進(jìn)程名和進(jìn)程號(hào)

wKioL1PLvhCQMqZ0AAD7aQPiG9s329.jpg

pidof:只顯示已啟動(dòng)進(jìn)程的PID

  1. [root@server ~]# pidof httpd # 沒啟動(dòng)的進(jìn)程不顯示  
  2. [root@server ~]# pidof man  
  3. 5283 
4、top命令

實(shí)時(shí)監(jiān)控系統(tǒng)資源

  1. # 執(zhí)行top命令后,進(jìn)入交互式模式 

wKiom1PLwTvzUMNsAASsHaYJe14951.jpg

  1. # top中的一些交互式命令:  
  2. # l:控制是否顯示第一行,負(fù)載均衡信息  
  3. # t:控制是否顯示進(jìn)程信息由和cpu信息  
  4. # m:控制是否顯示內(nèi)存,交換信息  
  5. # I 或者 1(數(shù)字):是否分別顯示cpu每個(gè)信息  
  6. # M: 按%mem排序顯示,從大到小  
  7. # k: kill 殺掉進(jìn)程  
  8. # s:修改默認(rèn)刷新時(shí)間 默認(rèn)是3秒  
  9. # 下面解釋抬頭信息:  
  10. top - 21:35:17 up 10:03,  4 users,  load average: 0.00, 0.00, 0.00  
  11. #   系統(tǒng)時(shí)間   啟動(dòng)時(shí)間 登錄用戶數(shù)    負(fù)載均衡:1min 5min 15min  
  12. # 何為系統(tǒng)負(fù)載?在這里指的是等待在進(jìn)程隊(duì)列里的平均進(jìn)程數(shù)  
  13. # 此出顯示的信息 等價(jià)于 uptime 命令  
  14. Tasks: 165 total,   1 running, 164 sleeping,   0 stopped,   0 zombie  
  15. # 進(jìn)程總數(shù)            運(yùn)行數(shù)     睡眠態(tài)數(shù)        停止態(tài)數(shù)    僵尸進(jìn)程數(shù)  
  16. Cpu(s):  0.0%us,0.0%sy, 0.0%ni, 100.0%id, 0.0%wa, 0.0%hi, 0.0%si,  0.0%st  
  17. # 0.0%us:user space:用于運(yùn)行用戶空間的程序所占的cpu百分比   
  18. # 0.0%sy:system space:用于運(yùn)行內(nèi)核空間的程序所占的cpu百分比     
  19. # 0.0%ni:nice值調(diào)用時(shí)間所占cpu百分百比  
  20. # 100.0%id:系統(tǒng)cpu空閑所占百分比  
  21. # 0.0%wa:用于等待I/O所占的cpu百分比  
  22. # 0.0%hi:硬中斷所占cpu百分比  
  23. # 0.0%si:軟中斷所占cpu百分比  
  24. # 0.0%st:系統(tǒng)被“偷走”的cpu所占的百分比,一般指的是用于虛擬機(jī)運(yùn)行所占的cpu  
  25. Mem:   1012548k total,   396328k used,   616220k free,    99444k buffers  
  26. #       總內(nèi)存大小     使用的內(nèi)存大小    剩余內(nèi)存大小    緩存的大小  
  27. Swap:  2097144k total,        0k used,  2097144k free,   144156k cached  
  28. #    交換分區(qū)總大小        使用的        剩余的            緩沖大小  
  29. # 此處顯示的信息等價(jià)于 free 命令 

常用選項(xiàng):

-d #: 指定刷新時(shí)間間隔

-b: 以批次的方式顯示top的刷新

-n #: 顯示的批次

例如:top -d 4 -b 2 -n 3

#p#

4、htop

htop命令是top命令的升級(jí)版,無(wú)論是在功能上還是在界面顯示上,都比top命令更勝一籌。

u: 交互式選擇顯示指定用戶的進(jìn)程

l: 顯示光標(biāo)所在進(jìn)程所打開的文件列表

s: 顯示光標(biāo)所在進(jìn)程執(zhí)行的系統(tǒng)調(diào)用

a: 綁定進(jìn)程到指定的CPU

#:快速定位光標(biāo)至PID為#的進(jìn)程上

下圖是htop的界面。這個(gè)工具比較強(qiáng)大,用法功能比較多,在這里先做簡(jiǎn)單介紹。以后筆者會(huì)專門寫htop的博客。

wKiom1PL1jHCpKO4AATAgaiStJA686.jpg

5、vmstat

wmstat 查看虛擬使用情況

  1. # 常用用法:  
  2. # vmstat 顯示信息會(huì)默認(rèn)1秒刷新一次,一直顯示  
  3. # vmstart -n 2 顯示信息會(huì)2秒刷新一次,一直顯示  
  4. # vmstat -n 1 4 顯示信息會(huì)1秒刷新一次,刷新4次  
  5. [root@server ~]# vmstat -n 1 1  
  6. procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----  
  7. r b swpd free buff cache si so bi bo in cs us sy id wa st  
  8. 0 0 0 614392 100468 144776 0 0 2 1 6 5 0 0 100 0 0  
  9. # 我們解釋一下每個(gè)字段的含義:  
  10. # procs字段 關(guān)于進(jìn)程的  
  11. # r 指運(yùn)行隊(duì)列的進(jìn)程數(shù),如果過長(zhǎng),可能是cpu性能較低  
  12. # b 阻塞隊(duì)列的長(zhǎng)度,通常是用于等待I/O的完成。如果太大,說(shuō)明I/O性能較低  
  13. # memory字段 關(guān)于內(nèi)存使用的  
  14. # swap 使用的交換內(nèi)存大小  
  15. # free 空余內(nèi)存大小 它的值=總大小-buff-cache-used  
  16. # buff 緩沖大小,目的是為了加速I/O的寫操作(一般是磁盤)  
  17. # cache 緩存大小,摸底是為了加速I/O的讀操作(一般是磁盤)  
  18. # swap字段 說(shuō)明交換內(nèi)存  
  19. # si swapin 指的是數(shù)據(jù)進(jìn)入交換內(nèi)存的速率 單位:KB/s  
  20. # so swapout 指的是數(shù)據(jù)出交換內(nèi)存的速率 單位:KB/s  
  21. # 如果這2個(gè)值比較大的時(shí)候,會(huì)出現(xiàn)抖動(dòng)現(xiàn)象。建議增加內(nèi)存  
  22. # io字段 I/O的說(shuō)明  
  23. # bi:Block in 從塊設(shè)備讀入內(nèi)存的速率 KB/s  
  24. # bo: block out 保存到塊設(shè)備的速率 KB/s  
  25. # 這就是我們通常說(shuō)的磁盤的讀寫性能,可以通過RAID提高。  
  26. # system字段 關(guān)于系統(tǒng)的  
  27. # in: interruppt 中斷發(fā)生的速率  
  28. # cs: 上下文切換的速率(進(jìn)程調(diào)度)  
  29. # cpu字段 說(shuō)明cpu的使用情況  
  30. # us:user space:用于運(yùn)行用戶空間的程序所占的cpu百分比  
  31. # sy:system space:用于運(yùn)行內(nèi)核空間的程序所占的cpu百分比   
  32. # id:系統(tǒng)cpu空閑所占百分比  
  33. # wa:用于等待I/O所占的cpu百分比,這是由于cpu和i/o速度相差太多所造成的  
  34. # st:系統(tǒng)被“偷走”的cpu所占的百分比,一般指的是用于虛擬機(jī)運(yùn)行所占的cpu的時(shí)間百分比 

6、nice,renice

調(diào)整進(jìn)程的優(yōu)先級(jí)。 

nice 在進(jìn)程啟動(dòng)的時(shí)候設(shè)置優(yōu)先級(jí)。

  1. # 常用參數(shù):  
  2. # -n NICE 例如:nice -n 3 httpd  
  3. # 一般情況下,nice值是負(fù)值的設(shè)定一般有管理員來(lái)設(shè)定。普通用戶只能設(shè)置nice為正值。  
  4. # 如果不指定 -n 參數(shù),默認(rèn)的nice值是10 

renice 重新設(shè)置已啟動(dòng)進(jìn)程的優(yōu)先級(jí)。

  1. # 常用選項(xiàng)是:  
  2. # -n NICE 重新設(shè)定nice的值   
  3. # -p PID  設(shè)定進(jìn)程的PID 

7、kill,killall

對(duì)于有Linux C編程經(jīng)驗(yàn)的人來(lái)說(shuō),我們知道IPC通信方式之一就是通過信號(hào)量(signal),那么對(duì)于kill和killall命令來(lái)說(shuō),它們與信號(hào)量有著很大的關(guān)系,或者說(shuō)kill,killall命令通過信號(hào)量讓我們可以手動(dòng)的向進(jìn)程傳遞信號(hào)來(lái)控制進(jìn)程。

常見的信號(hào)量如下:

  1. [root@server ~]# kill -l  
  2. 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP  
  3. 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1  
  4. 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM  
  5. 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP  
  6. 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ  
  7. 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR  
  8. 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3  
  9. 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8  
  10. 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13  
  11. 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12  
  12. 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7  
  13. 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2  
  14. 63) SIGRTMAX-1 64) SIGRTMAX   
  15. # 我們常用到的信號(hào)是:  
  16. # 1 SIGHUP 在不關(guān)閉進(jìn)程的情況下,重讀配置文件。ngnix在這方面做得相當(dāng)?shù)暮茫踔量梢詫?shí)現(xiàn)在線升級(jí)。  
  17. # 2 SIGINT 中斷信號(hào) 相當(dāng)于 ctrl + C   
  18. # 9 SIGKILL 暴力殺死  
  19. # 15 SIFTERM 優(yōu)雅的關(guān)閉 默認(rèn)是這種情況  
  20. # kill用法如下:  
  21. # kill [-SIGNAL] PID  
  22. # 對(duì)于SIGNAL有三種表示:例如:1) -9 -15 -1 -2 2)-SIGKILL -SIGHUP -SIGTERM 3) -HUP -KILL -TERM -INT 等。  
  23. #   
  24. # killall是殺掉一類進(jìn)程  
  25. # 例如:killall httpd 等價(jià)于 kill `pidof httpd` 

#p#

8、jobs,bg,fg

什么是作業(yè)呢?作業(yè)就是許多進(jìn)程一起協(xié)同完成一項(xiàng)具體的工作。作業(yè)有前臺(tái)作業(yè)和后臺(tái)作業(yè)2種。

使用 & 或者 ctrl + Z可以把一個(gè)進(jìn)程打入后臺(tái)。

  1. # ping 192.168.0.1 &  
  2. # 這樣打入后臺(tái)的運(yùn)行的作業(yè),退出終端的時(shí)候,作業(yè)就會(huì)終止。  
  3. # 使用 nohup 命令可避免這個(gè)問題  
  4. # nohup ping 192.168.0.1 &  
  5. # 可以使用jobs命令查看后臺(tái)的作業(yè)  
  6. # 每個(gè)作業(yè)都有一個(gè)作業(yè)號(hào)來(lái)標(biāo)識(shí)作業(yè)  
  7. # 作業(yè)控制命令  
  8. # bg [[%]JOB_NUM]: 讓送往后臺(tái)的作業(yè)繼續(xù)在后臺(tái)運(yùn)行   
  9. # fg [[%]JOB_NUM]: 將后臺(tái)作業(yè)調(diào)回前臺(tái)  
  10. # kill %JOB_NUM: 終止指定的作業(yè) 

9、dstat命令,查看各種狀態(tài)信息

用法:dstat [-afv] [options..] [delay [count]]

常用參數(shù) 具體意義
-c 顯示cpu統(tǒng)計(jì)數(shù)據(jù),如有多個(gè)CPU匯總統(tǒng)計(jì)
-d 顯示disk統(tǒng)計(jì)數(shù)據(jù),如有多塊磁盤則匯總統(tǒng)計(jì)
-D DEVICE 顯示特定磁盤的信息
-g 顯示page信息(具體什么是page以及他的作用,會(huì)在以后內(nèi)存調(diào)優(yōu)博客中具體說(shuō)明)
-i 顯示中斷的統(tǒng)計(jì)數(shù)據(jù)
-m 顯示內(nèi)存的統(tǒng)計(jì)信息
-l 顯示系統(tǒng)的負(fù)載信息
-n 顯示網(wǎng)絡(luò)接口的相關(guān)屬性
-s 顯示系統(tǒng)屬性
-N INTER_FACE_NAME 顯示特定接口的屬性
-s 顯示交換內(nèi)存的屬性
-p 顯示進(jìn)程隊(duì)列
--ipc 顯示ipc消息隊(duì)列、信號(hào)量和共享內(nèi)存的使用狀況
-a 等價(jià)于 -cdngy 顯示CPU,磁盤,網(wǎng)卡,page,系統(tǒng)屬性
-f 以完整格式顯示所有信息,
--tcp,--udp 顯示tcp,udp狀態(tài)信息

 更多參數(shù)查看 man 手冊(cè)。

示例:

wKioL1PPjaLSKNvDAAIC62HqoLo613.jpg

10、查看內(nèi)存映射

pmap PID 查看對(duì)應(yīng)進(jìn)程的內(nèi)存映射,常用的用法是:pman `pidof PROCESS_NAME`。當(dāng)然這些信息也可以查看 /proc/PID/pmap 文件查看。

wKioL1PPlxuwUs3qAASA-p7eoQo539.jpg

11、glances命令

一款強(qiáng)大的系統(tǒng)監(jiān)控工具:能實(shí)時(shí)監(jiān)控像cpu,meomory,load,swap,Network,mount,disk等信息。

wKiom1PPmBeQvjSkAAUMI3MjxWg937.jpg

其他功能的使用,請(qǐng)使用 h 來(lái)獲取幫助。由于此工具比較強(qiáng)大,因此這里者簡(jiǎn)單的介紹,后期會(huì)于 htop 工具做專門的介紹。

原文鏈接:http://guoting.blog.51cto.com/8886857/1440640

 

責(zé)任編輯:牛小雨 來(lái)源: 51CTO
相關(guān)推薦

2023-03-02 23:50:36

Linux進(jìn)程管理

2011-01-11 13:47:27

Linux管理進(jìn)程

2023-03-05 16:12:41

Linux進(jìn)程線程

2010-02-25 10:28:43

Linux進(jìn)程管理

2012-02-06 09:40:25

2021-03-17 21:34:44

Linux內(nèi)存管理

2017-04-11 16:00:40

Linuxsyslog進(jìn)程

2009-09-16 08:43:51

linux進(jìn)程線程

2010-01-05 10:00:48

Linux進(jìn)程間通信

2009-10-23 17:35:16

linux進(jìn)程管理

2019-05-08 11:10:05

Linux進(jìn)程語(yǔ)言

2023-03-03 00:03:07

Linux進(jìn)程管理

2009-10-27 08:57:50

linux殺死進(jìn)程

2021-06-15 08:02:55

Linux 進(jìn)程管理

2022-11-09 08:12:07

2013-12-19 15:01:03

LinuxLinux進(jìn)程

2013-11-06 15:35:49

LinuxLinux進(jìn)程

2013-10-11 14:51:16

Linux進(jìn)程管理

2021-04-22 07:47:46

Linux進(jìn)程管理

2021-04-15 05:51:25

Linux
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)