前期基礎知識準備,包括linux基礎知識中的關于虛拟化的一些概念
CPU:通過timeslice
memory:通過線性位址
IO:通過分時複用
了解一些程序檢視工具,包括:pstree,ps,pgrep,pidof,top,htop
htop指令(相對比較好用,這裡特别再提一下):
選項:
-d #:指定延遲時間
-u username:僅顯示指定使用者的程序
-s colomn:以指定字段進行排序
指令:
s:跟蹤標明程序的系統調用
l:顯示標明程序打開的檔案清單
a:将標明的程序綁定至某指定CPU核心
t:顯示程序樹
注意:需要使用fedora-epel源
這裡對linux程序檢視及管理工具的相關知識進行梳理的第二部分。
vmstat指令(比較早的一種工具,)
vmstat [options] [delay [count]]
procs:
r:等待運作的程序的個數
b:處于不可中斷睡眠态的程序個數(被阻塞的隊列的長度)
memory
swpd:交換記憶體的使用總量
free:空閑實體記憶體總量
buffer:用于buffer的記憶體總量
cache:用于cache的記憶體總量
swap
si:資料進入swap中的資料速率(kb/s)
so:資料離開swap中的資料速率(kb/s)
io
bi:從塊裝置讀入資料到系統的速率(kb/s)
bo:儲存資料至塊裝置的速率
system
in:interrupts,中斷速率
cs:context switch,程序切換速率
cpu:
us 使用者空間占比
sy 核心空間占比
id 空閑
wa io完成所消耗時間比例
st 被偷走的時間比例
選項
vmstat -s 與cat /proc/meminfo的作用相似
-s: 顯示記憶體的統計資料
pmap - report memory map of a process
記憶體映射表:顯示從線性位址到實體位址的映射
pmap [options] pid [...]
-x:顯示詳細格式的資訊
另一種實作
cat /proc/PID/maps
glances指令:
glances [-bdehmnrsvyz] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [-t refresh] [-f file] [-o output]
内建指令
a sort processes automatically
l show/hide logs
c sort processes by cpu%
b bytes or bits for network i/o
m sort processes by mem%
w delete warning logs
p sort processes by name
x delete warning and critical logs
d show/hide disk i/o stats
h show/hide this help screen
f show/hide file system stats
t view network i/o as combination
n show/hide network stats
u view cumulative network i/o
s show/hide sensors stats
q quit(esc and ctrl-c also work)
y show/hide hddtemp stats
常用選項:
-b:以byte為機關顯示網卡資料速率
-d:關閉磁盤i/o子產品
-f:/path/to/somefile 設定輸入文本位置
-o:(html/csv)輸出格式
-m:禁用mount子產品
-n:禁用網絡子產品
-t #:延遲時間間隔
-l:每個cpu的相關資料單獨顯示
c/s模式下運作glances指令
服務模式:
glances -s -B IPADDR
IPADDR:指明監聽于本機哪個位址
用戶端模式:
glances -c IPADDR
IPADDR:要連入的伺服器端位址
dstat指令
dstat [-afv] [options...] [delay [count]]
-c:顯示cpu相關資訊
-C #,#,...,total
-d:顯示disk相關資訊
-D total,sda,sdb,...
-g:顯示page相關統計資料
-m:顯示memory相關統計資料
-n:顯示network相關統計資料
-p:顯示process相關統計資料
-r:顯示io請求相關的統計資料
-s:顯示swapped相關的統計資料
--tcp
--upd
--unix
--raw
--socket
--ipc 程序間通信的統計資料
--top-cpu:顯示最占用cpu的程序
--top-io:顯示最占用io的程序
--top-mem:顯示最占用記憶體的程序
--top-lantency:顯示延遲最大的程序
kill指令:
向程序發送控制信号,以實作對程序管理
顯示目前系統可用信号
kill -l列出支援發送的信号
man 7 signal
常用信号:
1)sighup:無須關閉程序而讓其重讀配置檔案
2)sigini:中止正在運作的程序,相當于ctrl+c
9)sigkill:殺死正在運作的程序
15)sigterm:終止正在運作的程序
18)sigcont:
19)sigstop:
指定信号的方法:
(1)信号的數字辨別:1,2,9
(2)信号完整名稱:sighup
(3)信号的簡寫名稱:hup
向程序發信号:
kill [-SIGNAL] PID...
終止名稱之下的所有程序
killall [-SIGNAL] program
linux的作業控制
作業和程序不是一一對應的
前台作業:通過終端啟動,且啟動後一直占據終端
背景作業:可以通過終端啟動,但啟動後即轉入背景運作(釋放終端)
如何讓走也運作于背景
(1)運作中的作業
ctrl+z
(2)尚未啟動的作業
COMMAND &
此類作業雖被送往背景運作,但其依然與終端相關。如果希望送往背景後,剝離與終端的關系
nohup COMMAND &
檢視所有作業
jobs:
作業控制
fg [[%]JOB_NUM]:把指定的背景作業調回前台
bg [[%]JOB_NUM]:讓送往背景的作業在背景繼續運作
kill [%JOB_NUM]:終止指定的作業
程序優先級調整:
靜态優先級:100-139
程序預設啟動的nice值為0,優先級為120
nice指令
nice [OPTIONS] [COMMAND [ARG]...]
nice,renice
renice指令
renice [-n] priority pid...
檢視
ps,axo,pid,comn,ni
未涉及到的指令:sar,tsar,iostat,iftop