1. 程式人生 > >5月7日

5月7日

linux

10.6 監控io性能

1.監控io性能

命令 iostat -x 查看磁盤使用

技術分享圖片

註:%util這列就是表示磁盤io百分比,如果百分比很大,那就會導致讀與寫也很大,會影響磁盤性能,磁盤有異常

2 .iotop命令

使用 yum install -y iotop 安裝

輸入iotop命令, 查看磁盤io,動態顯示

技術分享圖片

技術分享圖片

10.7 free命令


1. free命令可以查看當前系統的總內存大小以及使用內存的情況。

查看內存使用多少,剩余多少請看第二行的數據。另外我們還可以加-m或-h 或者-g選項分別以M或G為單位打印內存使用狀況:

常用的命令選項是:free -h

技術分享圖片


解釋:

total:內存總大小。

used:真正使用的實際內存大小。

free:剩余物理內存大小(沒有被分配,純剩余)

shared:共享內存大小,不用關註它。

buff/cache:分配給buffer和cache的內存總共有多大。buffer和cache都是一部分內存,內存的作用就是緩解CPU和IO(如,磁盤)的速度差距的,可以如下理解:

數據經過CPU計算,即將要寫入磁盤,這時用的內存為buffer

CPU要計算時,需要把數據從磁盤中讀出來,臨時先放到內存中,這部分內存就是cache。

available:系統可使用內存有多大,它包含了free,同時還有buffert和cache這部分還未占用的內存。

free命令可以加上-m和-g、-h選項(分別以MB或GB為單位)打印內存的使用狀況

總結:

公式:total=used+free+buff/cache

avaliable包含free和buffer/cache剩余部分


10.8 ps命令


1.查看系統進程命令: ps aux 或 ps -elf 都可以

技術分享圖片

說明:

2. PID:表示進程的ID,在想要殺死進程的時候就有作用

命令 kill PID號 例子:kill 1346 ,有時殺不掉,則需要加一個-9選項了

kill -9 進程pid 例如:kill -9 1346

ps aux |grep qmgr 會看到的該進程被殺掉了

在遇到一個不知道的進程(有可能是被入侵的進程),在殺死的時候,就需要先查看進程的PID號。

3. STAT:進程的狀態。

D:不能中斷的進程,通常為IO (正在等待IO資源的進程,類似於vmstat中的b)。

R(run): 正在運行的進程,其中包括了等待CPU時間片的進程。

S(sleep):已經中斷的進程,同樣情況下系統的大部分進程都是這個狀態。

T:已經停止或者暫停的進程。如果我們正在運行一個命令,比如說sleep 10,我們按一下Ctrl+z暫停進程時,用ps命令查看就會顯示T這個狀態。

X:已經死掉的進程。

Z:僵屍進程。

<:高優先級進程。

N:低優先級進程。

s:主進程。

+:前臺的進程,例如此時ps aux就是前臺的進程。

l:多線程進程。


4. ps命令經常會連同管道符一起使用,用來查看某個進程或者它的數量

命令:ps aux |grep sshd

技術分享圖片

上例中的3不準確,需要減掉1,因為使用grep命令時,grep命令本身也算一個進程。


10.9 查看網絡狀態

1. 查看網絡狀態

netstat命令用來打印網絡連接狀況、系統所開放端口路由表等信息。

常用的netstat的命令就是這個 netstat -lnp (打印當前系統啟動哪些端口)和

netstat -an (打印網絡連接狀況

常用的命令有如下:

1.1 netstat 查看網絡狀態

1.2 netstat -lnp 查看監聽端口

1.3 netstat -an 查看系統的網絡連接狀況

1.4 netstat -lntp 只看出tcp的,不包含socket

1.5 ss -an nestat異曲同工,也是查看網絡狀態

1.1 netstat 查看網絡狀態

技術分享圖片

1.2 netstat -lnp 查看監聽端口

技術分享圖片

1.3 netstat -an 查看系統的網絡連接狀況

技術分享圖片

1.4 netstat -lntp 只看出tcp的,不包含socket

技術分享圖片

1.5 ss -annestat異曲同工,也是查看網絡狀態

技術分享圖片

2. 如果你所管理的服務器是一臺提供web服務(80端口)的服務器,那麽你就可以使用 命令:netstat -an |grep 80 查看當前連接web服務的有哪些IP了。

技術分享圖片

3.小技巧:

可以查看所有狀態的數字,

使用命令:netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'

如下:

技術分享圖片

10.10 linux下抓包

1. linux抓包工具tcpdump

有時候想看一下某個網卡上都有哪些數據包,尤其是當你初步判定你的服務器上有流量攻擊。這時,使用抓包工具來抓一下數據包,就可以知道有哪些IP在攻擊你了

安裝命令 yum install -y tcpdump

用法:tcpdump -nn -i eth0 (使用ifconfig查看網卡名稱)

1.1 只關註第3-4列,顯示為哪一個IP地址+端口號在連接哪一個IP+端口號。

1.2 -i表示網卡,後面跟的eth0是網卡名稱,如果想抓取其他網卡上的數據包,後面則要 跟其他網卡的名字。

1.3 -nn選項的作用是讓第三列和第四列顯示成“ip+端口號”的形式,如果不加-nn選項則顯示“主機名+服務名稱”。

技術分享圖片

其它用法:

tcpdump -nn -i ens33 -c 100 //-c作用是指定抓包數量,抓夠了就自動退出,不用人為取消。

tcpdump -nn -i ens33 port 80 // 指定只抓80端口的包

tcpdump -nn -i ens33 not port 22 //不要22端口的包

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 not port 22 and host 192.168.0.100 //只要這個ip的包

tcpdump -nn -c 100 -w /tmp/12.cap //指定打印數據包條數,然後存儲到指定文件裏。

tcpdump -r /tmp/12.cap //因為12.cap是二進制數據包,不是文本,所以不能cat,應該用這種方式讀取。

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"

這條命令可以查看指定網卡80端口的一個web訪問的情況,如果服務器沒有提供web服務,沒有任何的80端口在監聽,就無法顯示效果,類似web的訪問日誌。





5月7日