Linux系統--Linux程序與作業管理(3)
Linux程序管理和作業管理的另外幾種管理指令:vmstat,dstat,pmap,glances,kill
1.vmstat指令:
vmstat - Report virtual memory statistics
vmstat指令可以看到整個機器的CPU,記憶體,IO等使用情況。此指令不是動态顯示的,需要手動進行重新整理。
vmstat #:相隔#秒重新整理。
直接執行vmstat指令的結果為:

各個字段的含義:
procs:
r:等待運作的程序的個數
b:處于等待資源的程序數,比如正在等待IO或者記憶體交換等
memory:
swpd:交換記憶體的使用總量,機關KB。如果swpd的值不為0或者比較大,而si,so的值長期為0,這種情況不必擔心,不會影響系統性能。
free:目前空閑的實體記憶體數量,機關KB
buff:buffer cache的記憶體數量,一般對塊裝置的讀寫才需要緩沖
cache:表示 page cache的記憶體數量,一般作檔案系統的cached,頻繁通路的檔案都會被cached。如果cached值較大,說明cached檔案數較多。如果此時IO的bi較小時,說明檔案系統效率較好。
swap:
si:資料進入swap中的資料速率(kb/s),由磁盤點入記憶體
so:資料離開swap中的資料速率(kb/s),由記憶體調入磁盤
IO:
bi:從塊裝置讀入資料到系統的速率(kb/s)(讀磁盤)
bo:儲存資料至塊裝置的速率:(寫磁盤)
這裡設定的bi+bo的參考值為1000,如果值大于1000,而且wa值比較大,則表示系統磁盤IO性能瓶頸。
stytem:
in:interrupt,中斷速率
cs:context switch,上下文切換速率,程序切換速率。
CPU:
us:使用者空間消耗的CPU的時間百分比
sy:核心空間消耗的CPU的時間百分比
id:CPU處于空閑狀态的時間百分比
wa:IO等待所占的CPU時間的百分比
常用選項:
-f:顯示從系統啟動至今的fork數量
-s:顯示記憶體先關統計資訊
-d:顯示磁盤相關的統計資訊
-p 分區:顯示磁盤分區統計資訊
2.pmap指令:
pmap - report memory map of a process
pmap -x pids...
-x:顯示詳細格式資訊。
另一種實作:cat /proc/PID/maps
3.glances指令:
glance使用一款使用者Linux指令行系統監視工具,使用Python開發,能夠監視CPU,負載,記憶體,磁盤IO,網絡流量,檔案系統等資訊。
glances - A cross-platform curses-based monitoring tool
-b:以byte為機關顯示網卡資料速率
-d:關閉磁盤I/O子產品
-f:/path/to/somefile:設定輸入檔案
-o:{HTML|CSV}:輸出格式
-m:禁用mount子產品
-n:禁用網絡子產品
-t #:延遲時間間隔
glances界面:
glances界面分别顯示了CPU,Load,Mem,Swap,Network,Tasks,DiskI/O資訊。
進入glances界面之後有一些内建指令:
h:顯示幫助資訊
q:離開glances
c:按照CPU實時負載對系統程序進行排序
m:按記憶體使用狀況對系統程序進行排序
i:按照I/O使用狀況對系統程序進行排序
p:按照程序名稱進行排序
d:顯示磁盤讀寫狀況
w:删除日志檔案
l:顯示日志
s:顯示傳感器資訊
f:顯示系統資訊
4.dstat指令:
dstat:多功能系統資源統計生成工具。
dstat [-afv] [options..] [delay [count]]
-c:顯示CPU的相關資訊
-C 0,1,total
-d:顯示disk相關資訊
-D total,sda,sdb,sdc...
-g:顯示page相關統計資料
-m:顯示memory相關統計資料
-n:顯示network相關統計資料;
-N eth1,total 統計eth1接口彙總流量
-p:顯示process相關統計資料;
-r:顯示io請求相關的統計資料;
-s:顯示swapped相關的統計資料;
--tcp:和tcp相關的統計資料
--udp:和udp相關的統計資料
--unix:和unix相關的統計資料
--raw:和raw相關的統計資料
--socket:和socket相關的統計資料
--ipc:和ipc(程序間通信)相關的統計資料
--top-cpu:顯示最占用CPU的程序
--top-io:顯示最占用io的程序
--top-mem:顯示最占用記憶體的程序
--top-latency:顯示延遲最大的程序
由此可以看出dstat的功能強大之處,dstat還支援擷取MySQL5的相關資訊:
--mysql5-(cmds|conn|io|keys ) 擷取mysql5相關資訊
5.kill指令:
kill指令向程序發送控制信号,以實作對程序管理:
顯示目前系統可用信号:
kill -l
man 7 signal
常用的信号:
1) SIGHUP: 無須關閉程序而讓其重讀配置檔案;
2) SIGINT: 中止正在運作的程序;相當于Ctrl+c;
9) SIGKILL: 殺死正在運作的程序;該信号不能被阻塞,處理和忽略
15) SIGTERM:終止正在運作的程序;該信号可以被阻塞處理,要求正常殺死程序時,允許程序釋放資源之後kill掉
18) SIGCONT:讓停止的程序繼續執行
19) SIGSTOP:停止程序的執行
制定信号的方法:
1.信号的數字辨別:1,2,9,15,18,19
2.信号完整的名稱:SIGHP,SIGINT,SIGKILL
3.信号的簡寫名稱:HUP,INT,KILL
向程序發送信号:
kill [-signal] PID ...
終止“名稱“之下的所有程序
killall [signal] program
6.Linux的作業控制:
前台作業:通過終端啟動,且啟動後一直占據終端;
背景作業:可以通過終端啟動,但啟動後即轉入背景運作(釋放終端);
如何讓作業運作于背景?
(1) 運作中的作業
Ctrl+z
(2) 尚未啟動的作業
# COMMAND &
此類作業雖然被送往背景運作,但其依然與終端相關;如果希望送往背景後,剝離與終端的關系:
# nohup COMMAND &
檢視所有作業:
# jobs
作業控制:
# fg [[%]JOB_NUM]:把指定的背景作業調回前台;
# bg [[%]JOB_NUM]:讓送往背景的作業在背景繼續運作;
# kill [%JOB_NUM]:終止指定的作業;
7.程序優先級的調整:
程序優先級的調整,是調整靜态優先級:100-139
程序預設啟動時的nice值為0,優先級為120
如:我們運作top指令,來檢視其的優先級:
nice指令:
nice [OPTION] [COMMAND [ARG]...]
renice指令:
renice [-n] priority pid...