2018-5-28進程工具命令管理
task struct
任務結構列表當中所描述的數據結構。內核為了能夠追蹤每個任務,它靠諸多的task struct
,因此諸多的task struct
形成了任務列表task list
。回顧:Linux OS的基礎概念、進程查看等工具; 內核的功能:進程管理(進程調度) 進程調度:保存現場,恢復現場; task struct:任務結構; task list:任務列表;
一、Linux進程及作業管理(2)
1.1 htop命令
htop
是一個top
的升級版,擁有更多的功能以及更加友好的方式對用戶進行顯示,使用起來也非常的方便,但是這需要額外安裝,該軟件在
epel
源中。如果沒有epel
源的話,則需要添加。# yum info htop Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Available Packages Name : htop Arch : x86_64 Version : 2.1.0 Release : 1.el7 Size : 102 k Repo : aliyun-epel Summary : Interactive process viewer URL : http://hisham.hm/htop/ License : GPLv2+ Description : htop is an interactive text-mode process viewer for Linux, similar to : top(1).
看的出來屬於epel
源,我們進行安裝。
# yum -y install htop
安裝完成之後,我們直接輸入htop
命令。
# htop
作為程序包來講,CentOS系統不允許由兩個遠程終端使用同一個yum
命令,因為在安裝時,必須保證程序包的一致性和完整性。
對於htop而言,是可以支持鼠標操作的,如果點擊HELP的話,就會出現以下幫助界面。
那麽該命令的選項為:
選項: -d #:指定延遲時間間隔; -u UserName:僅顯示指定用戶的進程; -s COLUME:以指定字段進行排序; 子命令: l:顯示選定的進程打開的文件列表; s:跟蹤選定的進程的系統調用; t:以層級關系顯示各進程狀態; a:將選定的進程綁定至某指定的CPU核心;
1.2 vmstat命令
vmstat命令是統計並報告虛擬的內存數據的,默認顯示一行數據,delay和count就是指定每隔多長時間顯示多少次,而後自動退出,那麽對於該命令的格式為:
vmstat [options] [delay [count]]
例如:delay每隔3秒鐘count顯示3次。
# vmstat 3 3 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 0 434820 2084 375648 0 0 46 10 89 263 1 1 98 0 0 0 0 0 434820 2084 375680 0 0 0 1 83 85 0 0 100 0 0 0 0 0 434572 2084 375680 0 0 0 0 100 94 0 1 98 0 0
對於以上的字段來說,我們來一一進行解釋並且理解與讀懂,第一個就是procs,該字段為processes的簡寫。
procs: r:等待運行的進程的個數;CPU上等待運行的任務隊列長度; b:處於不可中斷睡眠態的進程個數;被阻塞的任務隊列的長度;
那麽第二列為顯示memory信息,在內存段中的一下的解釋信息為:
memory: swpd:交換內存使用總量; free:空閑的物理內存總量; buffer:用於buffer的內存總量; cache:用於cache的內存總量;
第三列為swap列信息,為交換分區的速率信息,表示每秒鐘多少個,在這裏取出的為平均值,在這一段中的解釋信息具體如下:
swap: si:數據進入swap中的數據速率(kb/s); so:數據離開swap的速率(kb/s);
第四列為io信息,在這個字段下有bi和bo,解釋信息如下:
io: bi:從塊設備讀入數據到系統的速度(kb/s); bo:保存到數據至塊設備的速率(kb/s);
第五列為system,為系統的某些處理操作,當用戶模式轉換為內核模式時,也是會發生中斷的,只不過系統調用是通過軟中斷的方式來決定的,包含的信息分別為:
system: in:interrupts,中斷速率; cs:context switch,上下文切換的速率;
最後一列為CPU的信息,在這個信息中字段很多,那麽這些字段分別解釋為:
cpu: us:user space sy:system id:idle wa:wait st:stolen
該命令的選項為:
選項: -s:顯示內存統計數據;
1.3 pmap命令
pmap命令用起來並不復雜,用來顯示及報告內存的進程映射表,進程映射表就是任何一個進程所使用的內存空間看上去是連續的,但這些內存頁會被放置在不連續的物理內存空間中,那麽該命令就是顯示內存信息。
那麽該命令的使用格式為:
pmap [options] PID [PID ...] -x:顯示詳細格式的信息; 另一種查看方式:cat /proc/PID/maps
1.4 glances命令
glannes命令也是最近出現的一款管理進程的工具,由Python
語言發言其功能非常強大的命令,而且支持C/S架構模式,遠程查看。
對於該命令來講,有許多的內建子命令,但可以省略,而使用選項也很多,我們簡單的介紹一些常用選項來舉例說明。
內建命令: 使用h鍵來進行獲取; 常用選項: -b:以bytes為單位顯示網上速率; -d:關閉磁盤I/O模塊; -m:關閉mount模塊; -n:關閉network模塊; -t#:刷新時間間隔; -l:每個CPU的相關數據單獨顯示; --export-csv FILENAME.csv:輸出格式; -f /PATH/TO/SOMEDIR:設定輸出文件的位置;
接下來我們使用C/S
模式下運行glances
。那麽說明由客戶端遠程連接服務端,在服務模式中指明選項為-s
和-B
,後面跟上其IP地址,而IP地址的指向就是本機的某地址,其作用用於監聽。
C/S模式下運行glances命令: 服務模式: glances -s -B IPADDR IPADDR:本機的某地址,用於監聽;
而客戶端模式我們使用-c
選項,後面跟上服務端的IP地址。
客戶端模式: glances -c IPADDR IPADDR:遠程服務器地址;
1.5 dstat命令
dstat
命令也是新晉出現的一款工具,而且已經收入到base源中,該命令的功能非常強大,它是一種非常精巧的查看系統使用率的一款命令工具,這款工具幾乎柔和了我們之前所學到那幾款命令工具的功能,那麽該命令的使用格式為:
dstat [-afv] [options...] [delay [count]]
默認輸入dstat
命令的界面為:
當我們不給任何選項時,默認的選項為-cdngy
,那麽我們總結一下其常用選項:
常用選項: -c, --cpu:顯示CPU相關的信息; -c #,#,...,total -d, --disk:顯示磁盤相關的信息; -D sda,sdb,...total -g:顯示page相關的信息; -m:Memory的相關統計數據; -n:Interface的相關統計數據; -p:顯示process的相關統計數據; -r:顯示io 請求的相關統計數據; -s:顯示swapped的相關統計數據; --tcp: --udp: --raw: --socket: --ipc: --top-cpu:顯示最占用CPU的進程; --top-io:最占用io的進程; --top-men:最占用內存的進程; --top-lantency:延遲最大的進程;
1.6 kill命令
kill命令顧名思義,就是殺死,其實真正的意義為向進程發送信號的,也可終止某一個進程。
kill命令: kill - terminate a process 用於向進程發送信號,以實現對進程的管理;
我們可以使用-l
選項來顯示當前系統上可用的信號類型,需要註意的是,只有管理員才有權限能夠kill
掉進程。
顯示當前系統可用信號: kill -l [signal] 每個信號的標識方法有三種: (1) 信號的數字標識; (2) 信號的完整名稱; (3) 信號的簡要名稱;
那麽我們向進程發送信號,可以使用-s
選項,也可以不使用就可以直接跟上其可用數字信號就可以。
向進程發送信號: kill [-s signal|-SIGNAL] pid...
在平時的操作中,我們常用的信號有:
常用信號: 1) SIGHUP:無須關閉進程而讓其重讀配置文件; 2) SIGINT:終止正在運行的進程,相當於Ctrl+c; 9) SIGKILL:殺死運行中的進程; 15) SIGTERM:終止運行中的進程; 18) SIGOUT: 19) SIGSTOP:
1.7 killall命令
當有許多進程一一處理很麻煩時,需要斬草除根時,必要時殺人滅口是非常關鍵的一個手段,正所謂好人做到低,使用killall
命令可以做到這一點,該命令的用法也很容易理解。與kill
命令不同是,killall
命令是根據進程名直接殺死進程,而不用指定PID
。
killall命令: killall [-SINGAL] program
2018-5-28進程工具命令管理