5月7日
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 -an 和nestat異曲同工,也是查看網絡狀態
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日