使用w查看系統負載html
vmstat命令linux
top命令ios
sar命令web
nload命令windows
監控io性能centos
free命令緩存
ps命令服務器
查看網絡狀態網絡
linux下抓包多線程
擴展
w命令能夠查看系統的運行狀況
詳細解釋:
信息 | 說明 |
---|---|
21:51:33 | 表示當前時間 |
up 209 days | 表示系統運行時間爲209天 |
1 users | 表示當前登陸用戶個數,能夠經過下面 USER行 查看當前的用戶 |
TTY | 登陸的方式 pts/0 表示網絡登陸 若是爲tty1-6 則是終端登陸 |
LOGIN@ | 表示用戶登陸時間 |
IDLE | 表示用戶空閒時間 |
FROM | 用戶登陸的ip |
JCPU | 該終端相關進程任務所耗費的時間 |
PCPU | 表示WHAT或任務執行後耗費的CPU時間 |
WHAT | 表示當前執行的任務 |
最經常使用的信息
load average:後面3個數字分別表明過去1,5,10分鐘內CPU的負載狀況。這個數值表示cpu的使用狀況,通常來講只要不超過cpu的核數就是正常的
查看cpu的核數
cat /proc/cpuinfo 其中processor表示cpu的核數。從0開始計算,0就是表示核數爲1。
或者使用lscpu命令查看
vmstat命令
vmstat命令能夠查看進程、內存、I/O等系統總體運行狀況
用法:
vmstat 1 5(1表示間隔時間爲1秒,5表示運行次數)
詳細說明
procs(進程):
r:運行隊列中的進程數量
b:堵塞的進程,網絡、硬盤等緣由致使的
memory(內存)
swpd:使用虛擬內存大小,若是數字大於0說明內存不夠
free:空閒物理內存大小
buff:做用緩存大小
cache:緩存大小
SWAP(交換區)
si:每秒從交換區寫到內存的大小
so:每秒寫入交換區的內存大小
IO(磁盤)
bi:每秒讀取的大小
bo:每秒寫入的大小
CPU
us:用戶佔用的cpu的百分比,若是長時間佔用超過50%說明cpu不夠了
sy:系統自己佔用的cpu百分比
id:空閒的cpu百分比
us+sy+id=100%
wa:等待cpu的百分比
top命令
top命令能夠動態的查看系統資源使用狀況相似於windows下的任務管理器,默認是三秒刷新一次。
用法
top -c:顯示進程的詳細信息
top -bn1:靜態顯示
經常使用操做
按q:退出顯示
按數字1:切換顯示cpu,以下:後面一張圖是按下1後顯示的第一塊CPU的使用信息。
按M:按內存使用狀況排序
按P:按cpu使用狀況排序。默認是安裝cpu使用大小排序的
統計信息區
第一行:
和w命令顯示的第一行信息同樣
第二行:
total :進程總數
running:正在運行的進程數
sleeping :睡眠的進程數
stopped :中止的進程數
zombie :殭屍進程數
第三行:
主要參數
us 用戶空間佔用CPU百分比
sy 內核空間佔用CPU百分比
id 空閒CPU百分比
第四行:
total:內存總量
free:剩餘的內存
used:使用的內存
buff/cache: 緩存
第五行:
total: 交換空間總量
free: 剩餘的交換空間
used: 使用的交換空間量
進程信息區:
PID:進行id
USER:進程所對應的用戶
PR:優先級
RES:進程使用的、未被換出的物理內存大小,單位kb。
%CPU :進程所使用cpu佔比
%MEM :進程使用內存佔比
TIME+: 進程使用的CPU時間總計,單位秒
COMMAND:命令行
sar命令
sar是一個很全面的監控命令,能夠監控cpu、磁盤i/o、網卡流量等。主要用來查看網卡流量和歷史的負載信息。
若是沒有sar命令,能夠進行安裝:
yum install -y sysstat
安裝sar命令後,sar會每隔十分鐘在/var/log/sa目錄下生成系統的日誌文件。
日誌文件類型分爲sa和sar開頭兩種,其中sa*是二進制文件,須要使用sar -f查看,sar*是文本文件直接查看便可。
sar命令查看網卡流量:
sar -n DEV 1 10
IFACE: 網卡名
rxpck:接收到的數據包,單位秒
txpck: 發出的數據包,單位秒
rxKB: 接受的數據量,單位秒
txKB:發出的數據量,單位秒
須要注意的是若是接收的數據包和數據量超過10000,說明有被攻擊的可能。
查看歷史網卡流量
若是要查看28號的信息:
sar -n DEV -f /var/log/sa/sa28
sa28表示28號這一天的信息,查看20號就sa20便可。最多保留一個月,就是最多能夠查一個月前的信息。
查看系統負載
sar -q
查看歷史負載:
如查看10號的
sar -q -f /var/log/sa10
nload命令
nload命令用來監控網絡流量,默認是沒有安裝的須要安裝使用。
安裝:
yum install epel-release
yum install nload
用法:
nload
第一行顯示網卡名、ip、當前網卡(能夠按左右鍵切換網卡)。按q退出
nload 默認分爲上下兩塊:
Incoming: 接收網卡的流量
Outgoing:出去的流量
Curr: 當前流量
Avg: 平均流量
Min: 最小流量
Max: 最大流量
Ttl: 總流量
監控io
磁盤io監控有兩個命令:iostat -x iotop
iostat -x 查看磁盤io負載
iostat和sar屬於同一個包,安裝了sar就可使用iostat
主要關注 %util,這個值越高說明磁盤I/O負載越高。通常大於70%說明I/O的壓力就很大了,須要進行排查是磁盤的問題仍是服務的問題。
iotop
iotop監控磁盤I/O使用狀況,相似於top,能夠監測到那一個程序在佔用I/O
安裝:
yum -y install iotop
free命令
free命令是用來查看內存和swap的使用狀況,默認的單位是kb
可使用-m或-g來指定單位,也可使用-h來查看
詳解:
Mem:物理內存信息
toptal:物理內存總和
used:已使用的內存大小
free: 空閒內存大小
shared: 共享內存
buff/cache: 緩存大小。
buffer與cacher 的區別
cacher:
(數據)磁盤——>內存(cache)——>cpu
CPU要計算時,須要把數據從磁盤中讀出來,臨時放到內存中,這部份內存就是cache。
buffer
(數據)cpu——>內存( buffer)——>磁盤
數據通過CPU計算,即將要寫入磁盤,這時用的內存爲buffer。
可用內存
available(可用內存): buff/cache+free的總和,也就是可用內存。若是想看可用內存,關注這個便可。
計算公式
total=used + free + buff/cache
ps命令
ps命令是用來查看系統進程
ps使用兩種方式
ps -aux 、ps -elf
ps aux 會把系統中全部的進程給列出來,靜態的顯示出來
ps -elf 顯示出的效果和ps aux基本相似,只不過輸出格式不一樣
顯示說明,以ps -aux爲例
顯示信息 | 說明 |
---|---|
USER | 進程運行的用 |
PID | 進程pid。一、殺進程:kill pid。二、查看進程啓動目錄:ls -l /proc/PID |
%CPU | 進程所使用cpu佔比 |
%MEM | 進程所使用內存佔比 |
VSZ | 虛擬內存 |
RSS | 物理內存 |
TTY | 運行在哪一個終端 |
STAT | 進程狀態 |
TIME | 進程運行時間 |
START | 進程啓動時間 |
COMMAND | 命令行 |
STAT進程運行狀態:
D : 不能中斷的進程 (會影響CPU資源)
R :run狀態的進程(正在運行的進程)
S :sleep狀態的進程
T :暫停的進程
Z :殭屍進程
字符< : 高優先級進程
N :低優先級進程
L :內存中被鎖了內存分頁
s :主進程
l :多線程進程
字符+ :前臺進程
查看監聽端口
netstat -lnp
查看全部的鏈接狀態
netstat -an
只查看tcp鏈接
netstat -ltunp
查看網絡狀態小技巧
查看全部的狀態的數字
netstat -an |awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t" ,sta[key]}'
主要關注ESTABLISHED這個值,它是網站的併發鏈接數,就是同一時間有多少個客戶端在鏈接你。若是這個值很大說明系統很繁忙,一般這個值在一千之內都是能夠接受的。
netstat相似的命令
ss -an
這命令和netstat顯示的差很少,可是它不顯示進程的名字
linux下抓包
抓包工具:tcpdump
這個命令若是不能使用則須要安裝:yum install -y tcpdump
tcpdump經常使用用法:
tcpdump -nn -i eth0
第一個n表示顯示ip,若是不加則顯示主機名。
第二個n表示顯示端口,不加則顯示端口服務名。
-i表示指定網卡
第一段:時間
第二段:IP 源ip+端口 > 目標ip+端口
第三段:數據包信息
DDos攻擊
udp flood 利用大量UDP小包攻擊服務器,遇到這種狀況只能接入防攻擊設備。
指定端口
tcpdump -nn -i eth0 port 22
排除端口
tcpdump -nn -i eth0 not port 22
tcpdump -nn -i eth0 not port 22 and host ip地址
指定數據包,並存到文件中
tcpdump -nn -i eth0 port 22 -c 10 -w 2.cap
-c:指定統計多少流量包
-w:指定生成到2.cap文件中
查看
tcpdump -r 2.cap
-r :表示讀取
tshark命令
tshark是一個相似於tcpdump的抓包工具,它有一個實用的功能:查看指定網卡的80端口的web訪問狀況。它能夠查看外部訪問的一個信息。
使用須要安裝:yum install -y wireshark
查看網卡ip命令:ifconfig
ifconfig命令在centos6中是默認安裝的,centos7須要進行安裝:
yum install -y net-tools
若是網卡是down掉的,默認是不顯示的,若是要查看能夠加上-a
關閉/啓動網卡
有的時候修改了網卡參數須要關閉重啓
ifdown 網卡名 :關閉網卡
ifup 網卡名: 啓動網卡
若是是遠程操做,網卡關閉就沒法鏈接操做了。這種狀況可使用如下方法:
`ifdown 網卡名 && ifup 網卡名`
設置虛擬網卡
cp /etc/sysconfig/network-scripts/原網卡 虛擬網卡
把現有的網卡複製一份,從新命名,並修改name, device, ip這三個參數。
ifdown 網卡名 && ifup 網卡名 使用這種方法重啓便可。
查看網卡鏈接狀態
mii-tool 網卡名
修改hostname
hostnamectl set-hostname 新主機名
須要退出登陸下生效。
查看hostname
hostname
DNS配置文件
/etc/resolv.conf 若是臨時修改DNS能夠修改這個文件,可是重啓後會被網卡配置文件的內容所覆蓋。
hosts文件
hosts文件windows和linux都有,用來指定域名解析ip。只能作本機使用
三次握手是爲了確認客戶端跟服務器都能接受到對方的信息。
第一次握手,客戶端給服務器發包。此時服務器確認本身能夠接收客戶端的包,客戶端不確認服務器是否接收到了本身發的包。
第二次握手,服務器端回覆客戶端。 此時客戶端確認本身發的包被服務器收到,也確認本身能夠正常接收服務器包,客戶端對這次通訊沒有疑問了。服務器能夠確認本身能接收到客戶端的包,但不能確認客戶端可否接收本身發的包。
第三次握手,客戶端回覆服務器。 客戶端已經沒有疑問了,服務器也確認剛剛客戶端收到了本身的包。兩邊都沒有問題,開始通訊。
舉個例子:
好比在紅軍時代,A連和B連分在左右翼,約定在幾時幾分一同發起打擊。
這個幾時幾分的信息就須要人工經過通信員來走路傳遞。因此A連指揮官派出通信員。這是第一次。
假設通信員到達了B連,而且告知了B連指揮官幾時幾分,B連指揮官必定會讓通信員再回去通知A連指揮官,可憐的通信員只能冒着危險返回A連,由於A連指揮官看不到通信員返回的話,不知道幾時幾分這個信息到底傳達到了B連沒有。這是第二次。
如今B連指揮官開始擔憂通信員是否回到了A連,若是沒回到,B連指揮官會設身處地的想想A連指揮官見不到返回的通信員,確定是不敢打的,因此B連指揮官最盼望的是再次看到通信員出如今B連,因此A連指揮官會讓通信員再回B連一次。這是第三次。
數據傳輸完畢後,雙方均可釋放鏈接。最開始的時候,客戶端和服務器都是處於ESTABLISHED狀態,假設客戶端主動關閉,服務器被動關閉。
第一次揮手:客戶端發送一個FIN,用來關閉客戶端到服務器的數據傳送,也就是客戶端告訴服務器:我已經不 會再給你發數據了(固然,在fin包以前發送出去的數據,若是沒有收到對應的ack確認報文,客戶端依然會重發這些數據),可是,此時客戶端還可 以接受數據。 FIN=1,其序列號爲seq=u(等於前面已經傳送過來的數據的最後一個字節的序號加1),此時,客戶端進入FIN-WAIT-1(終止等待1)狀態。 TCP規定,FIN報文段即便不攜帶數據,也要消耗一個序號。
第二次揮手:服務器收到FIN包後,發送一個ACK給對方而且帶上本身的序列號seq,確認序號爲收到序號+1(與SYN相同,一個FIN佔用一個序號)。此時,服務端就進入了CLOSE-WAIT(關閉等待)狀態。TCP服務器通知高層的應用進程,客戶端向服務器的方向就釋放了,這時候處於半關閉狀態,即客戶端已經沒有數據要發送了,可是服務器若發送數據,客戶端依然要接受。這個狀態還要持續一段時間,也就是整個CLOSE-WAIT狀態持續的時間。 此時,客戶端就進入FIN-WAIT-2(終止等待2)狀態,等待服務器發送鏈接釋放報文(在這以前還須要接受服務器發送的最後的數據)。
第三次揮手:服務器發送一個FIN,用來關閉服務器到客戶端的數據傳送,也就是告訴客戶端,個人數據也發送完了,不會再給你發數據了。因爲在半關閉狀態,服務器極可能又發送了一些數據,假定此時的序列號爲seq=w,此時,服務器就進入了LAST-ACK(最後確認)狀態,等待客戶端的確認。
第四次揮手:主動關閉方收到FIN後,發送一個ACK給被動關閉方,確認序號爲收到序號+1,此時,客戶端就進入了TIME-WAIT(時間等待)狀態。注意此時TCP鏈接尚未釋放,必須通過2MSL(最長報文段壽命)的時間後,當客戶端撤銷相應的TCB後,才進入CLOSED狀態。
狀態說明
CLOSED:初始狀態,表示TCP鏈接是「關閉着的」或「未打開的」。
LISTEN :表示服務器端的某個SOCKET處於監聽狀態,能夠接受客戶端的鏈接。
SYN_RCVD :表示接收到了SYN報文。在正常狀況下,這個狀態是服務器端 的SOCKET在創建TCP鏈接時的三次握手會話過程當中的一箇中間狀態,很短暫,基本上用netstat很難看到這種狀態,除非故意寫一個監測程序,將三次TCP握手過程當中最後一個ACK報文不予發送。當TCP鏈接處於此狀態時,再收到客戶端的ACK報文,它就會進入到ESTABLISHED 狀態。
SYN_SENT :這個狀態與SYN_RCVD 狀態相呼應,當客戶端SOCKET執行connect()進行鏈接時,它首先發送SYN報文,而後隨即進入到SYN_SENT 狀態,並等待服務端的發送三次握手中的第2個報文。SYN_SENT 狀態表示客戶端已發送SYN報文。
ESTABLISHED :表示TCP鏈接已經成功創建。
FIN_WAIT_1 :這個狀態得好好解釋一下,其實FIN_WAIT_1 和FIN_WAIT_2 兩種狀態的真正含義都是表示等待對方的FIN報文。而這兩種狀態的區別是:FIN_WAIT_1狀態其實是當SOCKET在ESTABLISHED狀態時,它想主動關閉鏈接,向對方發送了FIN報文,此時該SOCKET進入到FIN_WAIT_1 狀態。而當對方迴應ACK報文後,則進入到FIN_WAIT_2 狀態。固然在實際的正常狀況下,不管對方處於任何種狀況下,都應該立刻迴應ACK報文,因此FIN_WAIT_1 狀態通常是比較難見到的,而FIN_WAIT_2 狀態有時仍能夠用netstat看到。
FIN_WAIT_2 :上面已經解釋了這種狀態的由來,實際上FIN_WAIT_2狀態下的SOCKET表示半鏈接,即有一方調用close()主動要求關閉鏈接。注意:FIN_WAIT_2 是沒有超時的(不像TIME_WAIT 狀態),這種狀態下若是對方不關閉(不配合完成4次揮手過程),那這個 FIN_WAIT_2 狀態將一直保持到系統重啓,愈來愈多的FIN_WAIT_2 狀態會致使內核crash。
TIME_WAIT :表示收到了對方的FIN報文,併發送出了ACK報文。 TIME_WAIT狀態下的TCP鏈接會等待2*MSL(Max Segment Lifetime,最大分段生存期,指一個TCP報文在Internet上的最長生存時間。每一個具體的TCP協議實現都必須選擇一個肯定的MSL值,RFC 1122建議是2分鐘,但BSD傳統實現採用了30秒,Linux能夠cat /proc/sys/net/ipv4/tcp_fin_timeout看到本機的這個值),而後便可回到CLOSED 可用狀態了。若是FIN_WAIT_1狀態下,收到了對方同時帶FIN標誌和ACK標誌的報文時,能夠直接進入到TIME_WAIT狀態,而無須通過FIN_WAIT_2狀態。
CLOSING :這種狀態在實際狀況中應該不多見,屬於一種比較罕見的例外狀態。正常狀況下,當一方發送FIN報文後,按理來講是應該先收到(或同時收到)對方的ACK報文,再收到對方的FIN報文。可是CLOSING 狀態表示一方發送FIN報文後,並無收到對方的ACK報文,反而卻也收到了對方的FIN報文。什麼狀況下會出現此種狀況呢?那就是當雙方几乎在同時close()一個SOCKET的話,就出現了雙方同時發送FIN報文的狀況,這是就會出現CLOSING 狀態,表示雙方都正在關閉SOCKET鏈接。
CLOSE_WAIT :表示正在等待關閉。怎麼理解呢?當對方close()一個SOCKET後發送FIN報文給本身,你的系統毫無疑問地將會迴應一個ACK報文給對方,此時TCP鏈接則進入到CLOSE_WAIT狀態。接下來呢,你須要檢查本身是否還有數據要發送給對方,若是沒有的話,那你也就能夠close()這個SOCKET併發送FIN報文給對方,即關閉本身到對方這個方向的鏈接。有數據的話則看程序的策略,繼續發送或丟棄。簡單地說,當你處於CLOSE_WAIT 狀態下,須要完成的事情是等待你去關閉鏈接。
LAST_ACK :當被動關閉的一方在發送FIN報文後,等待對方的ACK報文的時候,就處於LAST_ACK 狀態。當收到對方的ACK報文後,也就能夠進入到CLOSED 可用狀態了。
ip命令使用
ip addr add 192.168.10.10/24 dev eth0
ip addr add 192.168.10.10/24 dev eth0
ip addr show eth0
ip addr del 192.168.10.10/24 dev eth0
路由相關設置
ip route show
ip route add default via 192.168.10.1
ip route add 192.168.5.0/24 dev eth0
ip route del 192.168.10.1
另外用route命令來管理路由:
(a)、網絡路由
route add -net 192.168.1.0/24 gw 172.16.1.106
(b)、主機路由
route add -host 192.168.1.110 gw 172.16.1.106
(c)、默認路由
route add default gw 172.16.1.106
或
route add -net 0.0.0.0 gw 172.16.1.106
(d)、刪除路由
route del -host 192.168.1.110 route del -net 192.168.1.0/24
顯示網絡統計數據
ip -s link
ip -s -s link ls eth0
中止開啓網卡
ip link set eth0 down
ip linke set eth0 up
更改網卡名字
ip link set ens37 name eth1