71.free,ps,netstat,抓包工具
free命令可以顯示當前系統未使用的和已使用的內存數目,還可以顯示被內核使用的內存緩沖區。
命令語法
free(選項)
選項
-b:以Byte為單位顯示內存使用情況;
-k:以KB為單位顯示內存使用情況;
-m:以MB為單位顯示內存使用情況;
-o:不顯示緩沖區調節列;
-s<間隔秒數>:持續觀察內存使用狀況;
-t:顯示內存總和列;
-V:顯示版本信息。
案例
free -m
total used free shared buffers cached
Mem: 2016 1973 42 0 163 1497
Swap: 4094 0 4094
第一部分Mem行解釋:
total:內存總數;
used:已經使用的內存數;
free:空閑的內存數;
shared:當前已經廢棄不用;
buffers Buffer:緩存內存數;
cached Page:緩存內存數。
關系:total = used + free
第二部分(-/+ buffers/cache)解釋:
(-buffers/cache) used內存數:第一部分Mem行中的 used – buffers – cached
(+buffers/cache) free內存數: 第一部分Mem行中的 free + buffers + cached
第三部分是指交換分區。
PS
ps命令用於報告當前系統的進程狀態。可以搭配kill指令隨時中斷、刪除不必要的程序。ps命令是最基本同時也是非常強大的進程查看命令,使用該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進程占用了過多的資源等等,總之大部分信息都是可以通過執行該命令得到的。
語法
ps(選項)
選項
選項賊多 不過常用的 都是 ps aux 或者搭配 管道符使用 如果需要了解的話 你可以 在系統上 ps --help即可
命令描述
PID :進程的id,這個id很有用,在linux中內核管理進程就得靠pid來識別和管理某一個程,比如我想終止某一個進程,則用kill 進程的pid有時並不能殺掉,則需要加一個-9選項了kill -9 進程pid,這樣做有點暴力,嚴重的時候回丟失數據,所以盡量不用。
STAT :表示進程的狀態,進程狀態分為以下幾種(不要求記住,但要大致了解)
D:不能中斷的進程(通常為IO)
R:正在運行中的進程
S:已經中斷的進程,通常情況下,系統中大部分進程都是這個狀態
T:已經停止或者暫停的進程,如果我們正在運行一個命令,比如說 sleep 10 如果我們按一下ctrl -z 讓他暫停,那麽我們用ps查看就會顯示T這個狀態
W:這個好像是說,從內核2.6xx 以後,表示為沒有足夠的內存頁分配
X:已經死掉的進程(這個好像從來不會出現)
Z:僵屍進程,殺不掉,打不死的垃圾進程,占系統一小點資源,不過沒有關系。如果太多,就有問題了。一般不會出現。
<:高優先級進程
N:低優先級進程
L:在內存中被鎖了內存分頁
s:主進程
l:多線程進程
+:代表在前臺運行的進程
netstat命令
命令描述
netstat命令用來打印Linux中網絡系統的狀態信息,可讓你得知整個Linux系統的網絡情況。
語法
netstat(選項)
選項
-a或--all:顯示所有連線中的Socket;
-A<網絡類型>或--<網絡類型>:列出該網絡類型連線中的相關地址;
-c或--continuous:持續列出網絡狀態;
-C或--cache:顯示路由器配置的快取信息;
-e或--extend:顯示網絡其他相關信息;
-F或--fib:顯示FIB;
-g或--groups:顯示多重廣播功能群組組員名單;
-h或--help:在線幫助;
-i或--interfaces:顯示網絡界面信息表單;
-l或--listening:顯示監控中的服務器的Socket;
-M或--masquerade:顯示偽裝的網絡連線;
-n或--numeric:直接使用ip地址,而不通過域名服務器;
-N或--netlink或--symbolic:顯示網絡硬件外圍設備的符號連接名稱;
-o或--timers:顯示計時器;
-p或--programs:顯示正在使用Socket的程序識別碼和程序名稱;
-r或--route:顯示Routing Table;
-s或--statistice:顯示網絡工作信息統計表;
-t或--tcp:顯示TCP傳輸協議的連線狀況;
-u或--udp:顯示UDP傳輸協議的連線狀況;
-v或--verbose:顯示指令執行過程;
-V或--version:顯示版本信息;
-w或--raw:顯示RAW傳輸協議的連線狀況;
-x或--unix:此參數的效果和指定"-A unix"參數相同;
--ip或--inet:此參數的效果和指定"-A inet"參數相同。
案例
列出所有端口 (包括監聽和未監聽的)
netstat -a #列出所有端口
netstat -at #列出所有tcp端口
netstat -au #列出所有udp端口
列出所有處於監聽狀態的 Sockets
netstat -l #只顯示監聽端口
netstat -lt #只列出所有監聽 tcp 端口
netstat -lu #只列出所有監聽 udp 端口
netstat -lx #只列出所有監聽 UNIX 端口
顯示每個協議的統計信息
netstat -s 顯示所有端口的統計信息
netstat -st 顯示TCP端口的統計信息
netstat -su 顯示UDP端口的統計信息
在netstat輸出中顯示 PID 和進程名稱
netstat -pt
抓包工具
1.tcpdump工具描述
tcpdump命令是一款sniffer工具,它可以打印所有經過網絡接口的數據包的頭信息,也可以使用-w選項將數據包保存到文件中,方便以後分析。
語法
tcpdump(選項)
選項
-a:嘗試將網絡和廣播地址轉換成名稱;
-c<數據包數目>:收到指定的數據包數目後,就停止進行傾倒操作;
-d:把編譯過的數據包編碼轉換成可閱讀的格式,並傾倒到標準輸出;
-dd:把編譯過的數據包編碼轉換成C語言的格式,並傾倒到標準輸出;
-ddd:把編譯過的數據包編碼轉換成十進制數字的格式,並傾倒到標準輸出;
-e:在每列傾倒資料上顯示連接層級的文件頭;
-f:用數字顯示網際網絡地址;
-F<表達文件>:指定內含表達方式的文件;
-i<網絡界面>:使用指定的網絡截面送出數據包;
-l:使用標準輸出列的緩沖區;
-n:不把主機的網絡地址轉換成名字;
-N:不列出域名;
-O:不將數據包編碼最佳化;
-p:不讓網絡界面進入混雜模式;
-q :快速輸出,僅列出少數的傳輸協議信息;
-r<數據包文件>:從指定的文件讀取數據包數據;
-s<數據包大小>:設置每個數據包的大小;
-S:用絕對而非相對數值列出TCP關聯數;
-t:在每列傾倒資料上不顯示時間戳記;
-tt: 在每列傾倒資料上顯示未經格式化的時間戳記;
-T<數據包類型>:強制將表達方式所指定的數據包轉譯成設置的數據包類型;
-v:詳細顯示指令執行過程;
-vv:更詳細顯示指令執行過程;
-x:用十六進制字碼列出數據包資料;
-w<數據包文件>:把數據包數據寫入指定的文件。
實例
如果沒有tcpdump 這個命令,需要用yum install -y tcpdump命令去安裝一下。上例中第三列和第四列顯示的信息為哪一個IP+port在連接哪一個IP+port,後面的信息是該數據包的相關信息,-nn參數是為了直接顯示ip+端口號,需要關註的只是第三列以及第四列。-i 選項後面跟設備名稱,如果你想抓ens33網卡的包,後面則要跟eens33。
如果不加-nn則顯示的是主機名+服務名稱。
-c選項,指定抓包數量。
# tcpdump -nn -i ens33 port 22 //只抓22端口的包
# tcpdump host 192.168.x.x //抓取指定ip的包
# tcpdump -nn -i ens33 tcp and not port 22 //指定抓tcp的包,但是不要22端口的
# tcpdump -nn -i ens33 port 22 and port 53 //只抓22和53端口的包
# tcpdump -nn -i ens33 -c 10 -i ens33 -w /tmp/tset.cap //保存10次抓包到/tmp/test.cap
# tcpdump -r /tmp/test.cap //讀取抓包文件
2.wireshark工具
安裝方式:yum install -y wireshark
實例:
# tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"
71.free,ps,netstat,抓包工具