監控io性能/free命令/ps命令/查看網絡狀態/linux下抓包

監控io性能

使用iostat命令查看磁盤負載狀況html

iostat -x

重點關注:%util佔比,若是這個值越大則表示你的硬盤越忙,這也會是你係統變慢的緣由;python

查看具體哪一個進程在讀寫,使用iotop,首次使用須要Yum安裝linux

yum install -y iotop

安裝完成以後通常就可使用,此處本人使用的是centos7.5版本運行iotop出現了一個錯誤,提示文件有問題:ios

通過查詢及羣裏小夥伴的分享,才找到緣由:centos

新版本linux系統的status信息不必定都是:\t來分割信息的了。iotop還沒更新過來,因此分割會出現有些信息分割出來只有一個key,沒有value.目前iotop還沒更新過來,因此臨時解決辦法就是跳過這些分割出來只有一列的信息。數組

解決辦法:安全

編輯圖示標紅文件,找到196行,添加以下代碼:bash

if not line.strip() : continue

python中格式空格比較重要,注意縮進問題,添加以下圖所示,而後:wq保存退出使用便可服務器

使用 iotop 命令繼續查看具體進程:網絡

iotop

free命令

查看當前系統的總內存大小以及使用內存的狀況。Centos7比Centos6更加簡潔了一些,但大致內容一致。

使用 free 命令

[root@yolks1 ~]# free
              total        used        free      shared  buff/cache   available
Mem:        1865276      151884     1492120        8924      221272     1535144
Swap:       2097148           0     2097148

展現的幾列表明的意思分別是:

  • total : 內存總大小
  • used:真正使用的實際內存大小
  • free:剩餘物理內存大小(沒有被分配,純剩餘)
  • shared:共享內存大小,不用關注它
  • buff/cache:buffer和cache都是一部份內存,內存的做用就是緩解CPU和IO的速度差距的
  • available:系統可使用內存有多大

** cache內存 : 磁盤(慢)--->> 內存(cache) --->> cpu(快) **

** buffer內存 :cpu(快)--->> 內存(buffer) --->> 磁盤(慢) **

** available = free + 欲分配buff/cache **

** total = used + available**

free還有-m的用法(表示以M爲單位)或者使用-h(以合適的大小顯示內存)

[root@yolks1 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1821         148        1457           8         216        1499
Swap:          2047           0        2047
[root@yolks1 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        148M        1.4G        8.7M        216M        1.5G
Swap:          2.0G          0B        2.0G

重點關注點 : ** available **

ps命令

查看系統進程

使用ps命令查看默認不帶參數

[root@yolks1 ~]# ps
   PID TTY          TIME CMD
  1389 pts/0    00:00:00 bash
  2417 pts/0    00:00:00 ps

因爲默認顯示的內容有限,經常使用的選項有 -aux 或 -elf查看進程詳細信息

篩選指定的任務進程 -aux | grep * 過濾

[root@yolks1 ~]# ps aux |grep sshd
root        959  0.0  0.2 110212  4096 ?        Ss   20:31   0:00 /usr/sbin/sshd -D
root       1387  0.0  0.2 154088  5232 ?        Ss   20:31   0:00 sshd: root@pts/0
root       2477  0.0  0.0 112676   980 pts/0    R+   21:53   0:00 grep --color=auto sshd

展現經常使用列含義:

  • USER : 用戶
  • PID : 表示進程的id,這個id頗有用。在linux中,內核管理進程就得靠pid來識別和管理某一個進程,好比這裏想要終止一個進程,則用命令「kill 進程的id」,有的時候這樣並不能關閉某些進程,須要加-9選項,但你這樣有些強行(暴力),嚴重的話可能會丟失數據,因此儘可能不用。
  • STAT : 表示進程的狀態
    • D:不能中斷的進程(一般爲IO)
    • R:正在運行的進程,包含等待CPU時間片的進程
    • S:已經中斷的進程。一般狀況下,系統的大部分進程都是這個狀態
    • T:已經中止或者暫停的進程。
    • Z:殭屍進程,即殺不掉,打不死的垃圾進程,佔用系統一點資源,不過沒有關係。若是佔用太多,則須要重視
    • <:高優先級進程
    • N:底優先級進程
    • L:在內存中被鎖了內存分頁
    • s:主進程
    • l:多線程進程
    • +:在前臺運行的進程,好比在當前終端執行的ps aux就是前臺進程

查看網絡狀態

netstat : 用於打印網絡鏈接情況、系統所開放端口、路由表等信息

選項:

  • lnp : 打印當前系統啓動哪些端口
  • lntp : 打印當前系統Internet connections服務端口
  • lndp : 打印當前系統UNIX domain服務端口
  • an : 打印網絡鏈接情況

使用an選項或lndp查看到有1列State狀態,具體值參考tcp/ip協議的通訊狀態文章,以下連接

linux服務器上11中網絡鏈接狀態

TCP三次握手及四次揮手詳細圖解

分享拓展:統計目前系統各通訊的計數命令(客戶端和服務端在通訊數量,1000 之內都是正常的)

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

上面命令使用語法參考文章:

linux awk數組操做詳細介紹

AWK處理數組

linux抓包

抓包(packet capture)就是將網絡傳輸發送與接收的數據包進行截獲、重發、編輯、轉存等操做,也用來檢查網絡安全。抓包也常常被用來進行數據截取等。

tcpdump

使用yum安裝

yum install -y tcpdump

tcpdump工具經常使用來查看某個網卡上的數據流向即網絡行爲,尤爲發現網絡流量異常時,使用抓包工具進行抓取ip分析行爲

經常使用參數 -nn (以ip地址顯示) 這裏因爲使用的虛擬機因此須要指定網卡加了 -i(指定網卡名稱) 參數,命令輸完回車,屏幕會不斷打印出字符,字符串不停刷新,這些內容就是傳輸數據的流向過程以及數據包,這裏重點關注 第三列和第四列 如上圖圈出所示,表示從哪一個 ip+端口 鏈接到哪一個 ip+端口Ctrl+C 退出程序。

選項

  • w : 保存抓取結果到指定的路徑 (tcpdump -nn -i ens33 not port 22 -c 10 -w /tmp/tcpdump_test.cap)
  • c : 指定抓包數量

cap文件讀取方式

tcpdump -r xxx.cap

經常使用結合:

tcpdump -nn -i ens33 port 22 //指定抓取22端口的包
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 24 //指定抓取只有22和24端口的包

linux下更多抓包選項參考文章 :

Linux系統-tcpdump經常使用抓包命令

wireshark

yum安裝

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"

經常使用用法:

使用tshark抓包分析http請求

相關文章
相關標籤/搜索