第7周第2次課(5月8日)
課程內容:
10.8 ps命令
10.9 查看網絡狀態
10.10 linux下抓包
擴展tcp三次握手四次揮手

tshark幾個用法:


[root@jimmylinux-002 ~]# iostat -x
查看磁盤io百分比,注意關注%util這一列,如果數字超過50%就說明有問題。
如果磁盤io很忙,讀寫很頻繁,查看到底是那個進程頻繁在讀寫,可以通過iotop命令查看,這個和top命令很像,都是動態顯示。
默認沒有iotop命令,需要先安裝。
10.7 free命令
可以直接查看內存使用情況,在CentOS6和7顯示是不同的,CentOS7里面會顯示的更加直觀。
第一行是一個說明
第二行是內存使用情況
第三行swap使用情況
[root@jimmylinux-002 ~]# free -h 可以更直觀查看內存使用情況
正常情況下,已使用+空余=總大小,但是在Linux里面會把內存預先分配一部分出來給buff和cache。
數據流向:
①0000(磁盤)-->內存(cache)-->CPU 存放到硬盤的數據到CPU,中間需要經過內存保存下來,然后再到CPU,這個叫緩存cache。
②CPU(0000)-->內存(buff)-->硬盤 CPU計算好的數據存放到硬盤,中間需要經過內存保存下來,然后再到硬盤,這個叫緩沖buff。
由於數據流向不同,所以系統會把內存先預留一部分出來給buff和cache
total的公式=used+free+buff/cache
available包含free和buff/cache剩余部分
真正查看內存剩余,主要是看available,而不是直接查看free。
swap也需要關注,如果free剩余為0,說明內存不夠了,或者內存泄漏,系統有bug,這個時候需要增加內存。
10.8 ps命令
[root@jimmylinux-002 ~]# ps aux
靜態一次性把當前的所有進程使用情況列出來,ps和top顯示結果很相像。
[root@jimmylinux-002 ~]# ps -elf 也可以使用這個命令查看,和ps aux基本上一樣。
檢查系統中有沒有某一個進程在運行,可以通過管道符方式查看。
stat狀態說明
D-->不能夠中斷的進程,如果有很多D狀態的進程,那么就會直接影響到系統負載。
R-->某個時間段內在使用CPU的進程
S-->進程使用完CPU后,會暫停一會。
T-->暫停的進程
Z-->僵屍進程太多的話,可以kill掉。
<-->高優先級進程
N-->低優先級進程
L-->內存中被鎖了內存分頁
s-->主進程
|-->多線程進程,線程和進程的關系,線程是由一個大的進程組成,一個進程里面有多個線程。
+-->前台進程
10.9 查看網絡狀態
netstat 查看TCP/IP通信的一個狀態
[root@jimmylinux-002 ~]# netstat -lnp 監聽服務和端口
[root@jimmylinux-002 ~]# netstat -an 查看tcpip狀態
查看netstat需要關注ESTABLISHED,如果數字很大說明系統很忙,數字表示有多少個客戶端在和服務端保持連接、保持通信,通常這里數字在1000以內服務器都是能接受的。
[root@jimmylinux-002 ~]# ss -an 和netstat命令功能類似,唯一缺點不能夠查看進程名字。
10.10 linux下抓包
tcpdump用法:
[root@jimmylinux-002 ~]# tcpdump -nn -i ens33 第一個n表示IP用數字顯示,如果不加會顯示主機名,第二個n表示端口號。
tcpdump -nn port 80 指定端口抓包
tcpdump -nn not port 22 and host 192.168.0.100 根據判斷條件進行抓包
tcpdump -nn -c 100 -w 1.cap 指定長度抓包並生成1.cap文件
tcpdump -r /tmp/1.cap 使用-r讀取1.cap文件的內容(主要就是數據流向)
tshark和tcpdump一樣都是可以抓包的工具,tshark可以查看指定網卡80端口的一個web服務訪問的情況,類似web服務的訪問日志。