Linux平常運維管理技巧-iostat、iotop、free、ps、netstat、tcpdump、tshark命令

監控io性能

iostat命令

iostat命令查看系統輸入輸出設備和CPU的使用狀況,在安裝 sysstat 這個包的時候,就會安裝iostat命令,和 sar 同一個包。html

iostat -x命令,其中有個很是重要的指標%util,表示io等待佔的百分比;若是%util數值達到50%或60%,說明磁盤的io很是差;若是%util數值很大,則rkB/s和wkB/s數值也很大;若是rkB/s和wkB/s數值不大,%util數值很大,這說明硬盤有問題。linux

iotop命令

iotop命令是一個用來監視磁盤I/O使用情況的top類工具,能夠動態查看哪個進程在頻繁的讀寫。ios

使用iotop命令前,先安裝iotop包,yum install -y iotop,運行iotop命令,關注IO>這一列。web

free命令

free命令是查看內存使用狀況的,直接運行free緩存

第一行是說明行,第二行是內存使用狀況,第三行是交換分區的使用狀況服務器

默認單位KB,使用free -m,可切換單位MB,使用-h,切換單位GB網絡

buff(緩衝)和cache(緩存)區別:數據流向不一樣多線程

磁盤——>內存(cache)——>cputcp

cpu——>內存(buffer)——>磁盤工具

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

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

ps命令

ps命令查看系統進程

ps -aux把系統中全部的進程給列出來

STAT:進程的狀態,須要關注

  • D:不能中斷的進程
  • R:run狀態的進程
  • S:sleep狀態的進程
  • s:主進程
  • T:暫停的進程
  • Z:殭屍進程
  • <:高優先級進程
  • N:低優先級進程
  • L:內存中被鎖定了內存分頁
  • l:多線程進程
  • +:前臺進程

進程與線程

進程由線程組成的,一個進程中有多個線程;進程與進程以前相互的不共享,線程之間是使用了同一個進程的內存區域。

ps -elf,與ps -aux顯示的信息基本同樣

查看網絡狀態

netstat命令查看網絡狀態,查看的就是tcp/ip通訊的一個狀態

netstat -lnp 查看監聽端口

netstat -ltnp 只查看tcp;netstat -ltunp 只查看tcp和udp

netstat -an 查看全部的鏈接狀態

netstat -an |awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t" ,sta[key]}',能夠查看全部狀態的數字,須要記住

ESTABLISHED數值表示當前有多少個客戶端在和服務端保持通訊;若是ESTABLISHED數值很大,表示系統很忙,一般數值在1000之內,服務器均可以接受。

ss -an命令與netstat相似,缺點是不會顯示進程名字

Linux下抓包

tcpdump命令

是用來抓取數據包的,運行前先安裝tcpdump包,yum install -y tcpdump

而後運行tcpdump -nn命令,須要指定網卡的名字tcpdump -nn -i ens33

第一個n,表示你的ip用數字的形式顯示出來,若是不加則會顯示出主機名.

tcpdump -nn ens33 port 22 (not port 22)指定端口爲22的(非22的端口)

tcpdump -nn not port 22 and host 192.168.0.100 除去22端口,只要ip爲192.168.0.100的包

tcpdump -nn -i ens33 -c 10 -w /tmp/1.cap指定抓包個數以及存放位置;用file命令查看1.cap文件大概信息,不能被cat查看,不然會亂碼

能夠用tcpdump -r查看1.cap信息,r就是read

tshark命令

該命令也是用來抓包的,使用前先安裝yum install -y wireshark

wireshark工具與tcpdump工具相似

命令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的訪問日誌,須要記住。

擴展

tcp三次握手四次揮手

tshark幾個用法

相關文章
相關標籤/搜索