10.6 監控io性能
10.7 free命令
10.8 ps命令
10.9 查看網絡狀態
10.10 linux下抓包
一、iostat與iotop命令
iostat命令與iotop,命令能夠看出系統磁盤的工作情況,及時發現磁盤問題,這兩個工具不是系統自帶的,分別需要yum安裝
其中iostat命令與前一篇博客中提到的sar命令在同一個(sysstat)包裏,如果能使用sar命令就能使用iostat命令。
安裝命令
yum install epel 先安裝epel擴展源
yum install sysstat iotop
(一)iostat命令,看util 如果數值過高,說明磁盤很忙或者出現問題。
查看磁盤的使用情況
iostat -x
注意標紅處數值,系統中的解釋如下,反正這個數值很高系統就反應很慢了,要麼換硬盤,要麼查出是什麼導致磁盤使用量飆升。
%util Percentage of elapsed time during which I/O requests were issued to the device (bandwidth utilization for the device). Device saturation occurs when this value is close to 100%.
(二)iotop,產看下哪一個進程佔用進程較多
在具體服務器上看的更明顯,磁盤讀寫最多的在第一排。
二、free命令
free命令用於查看內存的使用量。一般用free -h命令,看得要舒服點^^
其中
total=used+free+shared + buff/cache
available=free+shared + buff/cache
total=used+available
cache指的是磁盤到cpu途中經過的內存區
buff指的是cpu到磁盤間途中經過的內存區
三、ps命令
ps命令用於查看當前的系統進程,ps和top顯示的結果很像
兩種常用查看方式
1、ps aux
2、ps -elf
建議用ps aux
第一行各個項目的含義:
USER:用戶名
PID:進程的PID號,常用與kill命令強制關閉進程,默認是從小到大排列
%CPU:CPU佔用率
%MEM:內存佔用率
VSZ:進程所使用的虛存的大小(Virtual Size)
RSS:物理內存使用,和top命令res一樣
TTY:終端號,自己的終端用tty命令可以看到
STAT:進程狀態,該項內容較重要
D:保護進程,不能中斷的進程
R:run ,在運行的進程
S:大寫的S表示sleep狀態的進程,vmstat運行時是sleep狀態
T:暫停的進程
<:高優先級的進程
N:低優先級的進程
L:內存中內存分頁鎖定的進程
s:小寫的s,主進程
l:小寫的L,多線程進程
+:前臺進程
START:進程開始時間
TIME:進程運行的時間
COMMAND:進程名
(一)應用舉例
1、查看某一個程序或者服務是否在運行
ps aux | grep sshd 這裏的sshd可以是任意程序,比如我們經常使用的ngix、mysql等等。
2、根據pid強制關閉某一進程
kill (pid號) 比如kill 1571
pid號通過 ps aux |grep '程序名'方式查看
先運行一個命令並放到後臺
現在我們根據他的pid1571把他強制關閉
這時我們在看下ps aux 看下進程表就不存在這個進程了。
出現殭屍進程的場景,啓用nigix,當父進程被意外殺掉時,子進程就可能進入殭屍進程
3、通過進程號查看進程的路徑
ls -l /proc/(pid號)
通過這條命令可以看出進程是哪個程序創建的。
四、netstat命令
netstat用於查看網絡狀態,linux服務器運行各種服務後需要開放一些特定的端口讓其他ip的設備去訪問來提供相應的服務,比如說xhsell訪問服務器就要用到22端口。windows下也有netstat命令 ,也有查看開放端口的功能。
windows下的netstat命令
tcp三次握手、四次揮手的內容參見:www.doc88.com/p-9913773324388.html
netstat命令應用示例
1、netstat -lnp查看監聽端口,需要
如果只需要查看tcp的
netstat -lntp
2、如果只需要查看tcp與udp的
netstat -ltnup
3、netstat -an查看系統所有的網絡連接狀況
4、ss -an查看網絡連接狀況
這個命令也能看鏈接情況,但是沒有顯示連接的進程,而netstat 命令就可以看到
5、通過netstat命令和awk命令查看網絡鏈接各種狀態的總數。
netstat -an|awk '/^txp/ {++stat[$NF]} END {for(key in sta) print key,"\t",sta [key]}'
命令有點長,需要記住,最好能理解。
五、抓包工具
網絡出現異常的時候會需要抓包,網絡出現異常流量時需要抓包看看是出現了什麼問題,比如看到***,頻繁訪問一些端口的一些請求時就要注意自己是不是被***了。抓取網絡流量需要使用tcpdump工具或者wireshark工具。
tcpdump工具
首先要使用yum安裝tcpdump工具,包名就是tcpdump
yum install tcpdump
用法示例
抓取某個網卡的包
txpdump -nn -i (網卡名,用nmcli dev show查看)
圖示這個ens33就是網卡名,注意在centos6中網卡是從ens1開始的,而且網卡名會變,而centos7不會,他是根據硬件信息命令名的。
看看抓包結果
tcpdump -nn -i ens33
命令選項中的n就是將源主機顯示爲ip地址+端口號形式,默認顯示的是主機名+服務名。我們主要看包從哪來,到哪去,走的是哪個端口的信息。
一般情況下,大部分的包都應該是tcp的包,如果有很多udp的包時就有可能服務器被DDOS***了,這時就要藉助專業工具或硬件來防護
2、指定端口和網卡抓包
tcpdump -nn ens33(網卡名) port22(端口號)
3、抓取網卡網絡通信的10個包並將他導入/tmp/1.cap
tcpdump -i ens33 -c 10 -w /tmp/1.cap
這個文件是不可cat的!
查看文件信息:
file /tmp/1.cap
讀取具體內容
tcpdump -r /tmp/1.cap