第十章、日常運維(上)
阿新 • • 發佈:2018-08-25
抓取 進入 fff 0.11 cpu rip 筆記 裏來 ifd 查看cpu核數
只看processor,如果是0,說明只有一顆邏輯cpu;如果是1,就有2顆邏輯cpu
uptime #也能查看系統負載,不過只是w的第一行
top #查看進程使用情況,動態的,三秒顯示一次
主要看us(長期處於60%以上,對主機沒好處)
第一行,跟w命令查看的一樣
第二行 進程總數狀況 總數 r狀態數 休眠狀態數 停止狀態數 僵屍進程數(主進程被意外終止了,只留下子進程在這裏)
第三行 cpu百分比 st(表示被偷走的cpu百分比)
第四行 物理內存使用情況 總內存數 剩余內存數 使用內存數 buff/cache數
第五行 交換分區使用情況
顯示進程
默認情況下,按照cpu百分比排序(使用cpu多的排前面)
%CPU :使用cpu百分比
%MEM:使用內存百分比
RES:物理內存大小(單位為k字節)
COMMAND:進程所在的路徑名
##按q退出,數字1顯示所有核cpu使用情況(從第三行觀看),大寫字母M按內存使用排序,大寫字母P按cpu使用排序
top -c #顯示詳細的進程信息,COMMAND:進程所在的絕對路徑
top -bn1 # 靜態顯示所有進程 (適合在寫腳本的時候用)
10.1 使用w查看系統負載
10.2 vmstat命令
10.3 top命令
10.4 sar命令
10.5 nload命令
10.6 監控io性能
10.7 free命令
10.8 ps命令
10.9 查看網絡狀態
10.10 linux下抓包
10.11 Linux網絡相關
10.11擴展
10.12課堂筆記
10.1 使用w查看系統負載
監控系統狀態 w #查看系統負載 第一行 當前系統時間 啟動多長時間 登錄幾個用戶 系統負載(一分鐘系統負載數,五分鐘系統負載數,十五分鐘系統負載值)(負載正常值是8以內) ##含義:單位時間段內使用cpu活動的進程有多少個(平均值) 第二行 用戶 tty 從哪裏來 登陸時間 cat /proc/cpuinfo10.2 vmstat命令
vmstat 1 #查看系統進程,一秒動態顯示一次,按Ctrl+c結束 vmstat 1 5 #查看系統進程,一秒動態顯示一次,顯示5次自動結束 關鍵的幾列: r :run,表示有多少個進程處於run狀態,run就是在等待使用cpu b:block,表示被除cpu以外的資源阻斷了,卡死了,處於等待的狀態 swpd:如果數字在持續變化,說明你的內存不夠了 si:有多少數據塊從swap進入內存 so:多少數據塊從內存出去到swap bi:從磁盤裏出來,進入到內存裏去;從磁盤裏讀 bo:從磁盤裏寫 us:表示用戶占用cpu資源百分比,不超過100%,;如果長時間大於50%,說明系統資源不夠了 sy:系統本身進程服務占用資源百分比 id:cpu空閑資源百分比 ps:us+sy+id=100% wa:類似b,表示進程等待cpu的百分比數,有多少進程在等待cpu,如果wa很大, 說明cpu不夠用10.3 top命令
10.4 sar命令
主要用來查看網卡流量 yum install -y sysstat #安裝sar命令 sar每十分鐘將系統狀態抓一次,放入/var/log/sa/saxx 文件內 (xx表示抓取日期) ps: /var/log/sa/ 目錄內容最多保存一個月 sar -n DEV #網卡流量 sar -n DEV 1 10 #每隔一秒顯示一次,共顯示十次 IFACE:網卡名稱 rxpck/s:接收到的數據包(單位為個) (數據包幾千個正常,數據包上萬的話就不正常了) txpck/s:發送的數據包(單位為個) rxkB/s:接受的數據量(大小為kB) txkB/s:發送的數據量(大小為kB) sar -q #查看歷史sar文件 sar -q 1 10 #查看系統負載一秒一次,共10次 sar -b #查看磁盤讀寫 sar -b 1 5 sar -f /var/log/sa/saxx #查看歷史sar文件 sa目錄會生成兩種文件saxx和sarxx, saxx是二進制的文件,不能cat,只能用 sar -f 選項去加載查看 sarxx是可以直接cat(sarxx會在saxx文件產生後一天出現)10.5 nload命令
監控網卡流量 yum install -y epel-release yum isntall -y nload nload #顯示實時的動態的網卡流量 第一行 網卡名 IP地址 網卡數(按方向鍵可以切換其他網卡) curr:當前值 avg:平均值 Min:最小值 Max:最大值 #一般情況買來的帶寬的性能看的是出去的流量(Outgoing)10.6 監控io性能
iostat命令也在sysstat包裏面,與sar命令一樣 iostat -x #磁盤使用情況,主要關註%util這一列 %util:表示io,有多少時間占用cpu,等待io時間比 如果數值很大,說明io不好或是io很忙,讀寫數值也會很大;如果只是wkb/s大,說明硬盤可能存在著問題,有些故障 yum install -y iotop iotop #查看磁盤io使用情況10.7 free命令
free #查看內存使用情況 第一行是說明 第二行是內存使用情況 內存總大小(kB) 使用內存數 空閑內存數 第三行是交換分區的使用情況 free -m #單位為M free -h #數值後面加上M total=used+free+buff/cache buff和cache的區別 buff:緩沖 cache:緩存 數據流向: 1、數據從磁盤讀出來,先放內存裏,然後交給cpu運轉 磁盤-->內存(cache)-->cpu 2、cpu把數據計算完,放到內存裏,最後存到磁盤裏去 cpu-->內存(buffer)-->磁盤 avaliable包含free和buffer/cache剩余部分10.8 ps命令
ps #查看系統進程靜態 ps aux 和ps -elf一樣 #把系統所有進程全部列出來 kill [pid] #殺死進程 ls -l /proc/[pid]/ #查看進程的啟動位置 stat部分說明 D:不能中斷的進程 R:run狀態的進程 S:sleep狀態的進程 T:暫停的進程 Z:僵屍進程 <:高優先級進程 N:低優先級進程 L:內存中被鎖了內存分頁 s:主進程 l:多線程進程 +:前臺進程10.9 查看網絡狀態
netstat #查看tcp/ip通信網絡狀態 netstat -lnp #查看監聽端口 netstat -an #查看系統的網絡連接狀況 netstat -lntp #只看出tcp的,不包含socket -t #tcp -u #udp ##小技巧 netstat -an |awk ‘/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}‘ ##查看所有tcp握手、揮手狀態的數量 established 一千以內正常 ss -an 類似 nestat ,但是不會顯示進程的名字10.10 linux下抓包
? 抓包工具tcpdump #查看數據的流向 yum install -y tcpdump ? 用法:tcpdump -nn #第一個n表示ip,第二個n表示端口號 ? tcpdump -nn -i ens33 #抓包ens33網卡 #一般情況下都是tcp的包,如果是udp的包,有可能被攻擊了 ? tcpdump -nn port 80 #抓包80端口的 ? tcpdump -nn -i ens33 port 80 #抓包ens33網卡的80端口 ? tcpdump -nn not port 22 and host 192.168.0.100 #不要22端口的,和只要192.168.0.100ip的 ? tcpdump -nn -c 10 -w /tmp/1.cap #指定-c10個數據包,-w包存到/tmp/1.cap #/tmp/1.cap不能用cat查看,因為內容是通信的數據可以通過tcpdump -r /tmp/1.cap查看 ? yum install -y wireshark #安裝tshark命令 ? 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訪問情況10.11 Linux網絡相關
ifconfig #查看網卡ip(yum install net-tools) ? ifup ens33 #開啟網卡ens33 ifdown ens33 #關閉網卡ens33 ifdown ens33 && ifup ens33 #重啟網卡 ? 設定虛擬網卡ens33:1 1、cd /etc/sysconfig/network-scripts/ 2、cp ifcfg-ens33 ifcfg-ens33\:0 3、vim ifcfg-ens33\:0 修改下面三個 name=ens33:0 DEVICE=ens33:0 IPADDR= DNS1去掉,因為已經有了 4、ifdown ens33 && ifup ens33 ? mii-tool ens33 #查看網卡是否連接, ? ethtool ens33 #也可以查看網卡是否連接 ? hostnamectl set-hostname aminglinux # 更改主機名CentOS6不支持該命令 修改DNS的兩種方式: 1、 修改DNS配置文件/etc/resolv.conf 2、修改網卡配置文件/etc/sysconfig/network-scripts/ifcfg-網卡名 ? /etc/hosts文件 192.168.133.150 www.qq123.com #左邊ip,右邊域名,支持一個ip多個域名 #ping www.qq123.com時,會轉到192.168.133.150 (只會在本機生效)10.12擴展
tcp三次握手四次揮手(重點面試問到) http://www.doc88.com/p-9913773324388.html tshark幾個用法:http://www.aminglinux.com/bbs/thread-995-1-1.html10.13課堂筆記
10.1 使用w查看系統負載 uptime #只顯示w的第一行 lscpu #查看cpu具體信息 cat /proc/cpuinfo #查看cpu具體信息, lsb_release #查看操作系統版本 cat /etc/issue #查看操作系統版本 uname -r #查看內核信息 lspci -k #顯示驅動信息 cat /proc/meminfo #查看內存信息 10.2 vmstat命令(面試常考) vmstat -n 1 #每一秒顯示系統負載 r列表示有多少進程在run(運行)的狀態; b代表cpu以外的資源被其他進程占用; swpd當內存不夠時數值會發生變化; si代表有多少kb的數據從swp進入到內存中; bi代表從磁盤中出來到內存中去, bo代表寫入的數據量數值大小代表磁盤數據的 讀寫頻率; us表示用戶級別的一些資源占用的cpu百分比; us +sy +id =100; wa代表等待cpu的百分比。 buffer 與cache的區別(常考) 1、buffer是位於內存和硬盤之間,叫做緩沖;cache是位於CPU和主內存之間,叫做緩存 2、緩沖速率低於緩存 3、數據流向不同 磁盤(數據) --》 內存(起緩存作用cache) --》 cpu cpu (數據) --》 內存(起緩沖作用buffer) --》 磁盤 10.3 top命令 top與w顯示的第一行相同 第二行查看系統任務狀態 第三行cpu利用率 原本是cpu(s)按e,變成cpu(0); 按M,按內存大小排序 id : idle ,表示cpu的空閑率,id越高,cpu非常空閑 wa:進程等待cpu的占用率 10.4 sar命令 ##sar掌握網卡流量就行,其他的了解 sar -n 數字 #-n指定打印次數 sar -n DEV 1 2 #DEV表示網卡流量 ,1表示每秒顯示一次,2表示打印兩次 sar -b 1 #查看硬盤,一秒顯示一次 10.5 nload命令 yum install -y epel-release yum install -y nload #安裝前提要有epel擴展源 nload #動態實時顯示網卡,按方向鍵可以查看其它網卡 10.6 監控io性能 iostat -x #查看磁盤使用 #io百分比表示等待執行的進程,wkb數值很大的話說明硬盤可能有故障 -z 數字 #表示多久顯示一次 iotop #實時顯示磁盤讀寫速率 10.7 free命令 第一列是內存的總大小,單位是kb(可以使用free -h); 第二列是使用了多少; 第三列是剩余內存數量; buff/cache(緩沖和緩存)是預分配內存的量; avaliable是預分配和沒有完的內存 total=used+free+buff/cache 10.8 ps命令 ps -ef 和ps -aux 類似,查看所有運行的進程 ps -C 進程名 #查看系統裏是否有這個進程 kill命令加pid可以殺死進程(結束)- D是不能中斷的進程;
- R run狀態下的進程;
- S sleep狀態下的進程;
- T 暫停的進程;
- Z 僵屍進程;
- < 高優先級的進程;
- N 低優先級進程;
- s 主進程;
- l 多線程進程;
- + 前臺進程。
- TCP服務器進程先創建傳輸控制塊TCB,時刻準備接受客戶進程的連接請求,此時服務器就進入了LISTEN(監聽)狀態;
- TCP客戶進程也是先創建傳輸控制塊TCB,然後向服務器發出連接請求報文,這是報文首部中的同部位SYN=1,同時選擇一個初始序列號 seq=x ,此時,TCP客戶端進程進入了 SYN-SENT(同步已發送狀態)狀態。TCP規定,SYN報文段(SYN=1的報文段)不能攜帶數據,但需要消耗掉一個序號。
- TCP服務器收到請求報文後,如果同意連接,則發出確認報文。確認報文中應該 ACK=1,SYN=1,確認號是ack=x+1,同時也要為自己初始化一個序列號 seq=y,此時,TCP服務器進程進入了SYN-RCVD(同步收到)狀態。這個報文也不能攜帶數據,但是同樣要消耗一個序號。
- TCP客戶進程收到確認後,還要向服務器給出確認。確認報文的ACK=1,ack=y+1,自己的序列號seq=x+1,此時,TCP連接建立,客戶端進入ESTABLISHED(已建立連接)狀態。TCP規定,ACK報文段可以攜帶數據,但是如果不攜帶數據則不消耗序號。
- 當服務器收到客戶端的確認後也進入ESTABLISHED狀態,此後雙方就可以開始通信了。
- 客戶端進程發出連接釋放報文,並且停止發送數據。釋放數據報文首部,FIN=1,其序列號為seq=u(等於前面已經傳送過來的數據的最後一個字節的序號加1),此時,客戶端進入FIN-WAIT-1(終止等待1)狀態。 TCP規定,FIN報文段即使不攜帶數據,也要消耗一個序號。
- 服務器收到連接釋放報文,發出確認報文,ACK=1,ack=u+1,並且帶上自己的序列號seq=v,此時,服務端就進入了CLOSE-WAIT(關閉等待)狀態。TCP服務器通知高層的應用進程,客戶端向服務器的方向就釋放了,這時候處於半關閉狀態,即客戶端已經沒有數據要發送了,但是服務器若發送數據,客戶端依然要接收。這個狀態還要持續一段時間,也就是整個CLOSE-WAIT狀態持續的時間。
- 客戶端收到服務器的確認請求後,此時,客戶端就進入FIN-WAIT-2(終止等待2)狀態,等待服務器發送連接釋放報文(在這之前還需要接受服務器發送的最後的數據)。
- 服務器將最後的數據發送完畢後,就向客戶端發送連接釋放報文,FIN=1,ack=u+1,由於在半關閉狀態,服務器很可能又發送了一些數據,假定此時的序列號為seq=w,此時,服務器就進入了LAST-ACK(最後確認)狀態,等待客戶端的確認。
- 客戶端收到服務器的連接釋放報文後,必須發出確認,ACK=1,ack=w+1,而自己的序列號是seq=u+1,此時,客戶端就進入了TIME-WAIT(時間等待)狀態。註意此時TCP連接還沒有釋放,必須經過2?MSL(最長報文段壽命)的時間後,當客戶端撤銷相應的TCB後,才進入CLOSED狀態。
- 服務器只要收到了客戶端發出的確認,立即進入CLOSED狀態。同樣,撤銷TCB後,就結束了這次的TCP連接。可以看到,服務器結束TCP連接的時間要比客戶端早一些。
第十章、日常運維(上)