Linux系統通過Shell腳本實現一個全方面的系統性能分析系統

      網友投稿 1221 2022-05-28

      linux系統通過shell腳本實現一個全方面的系統性能分析系統

      文章目錄

      Linux系統通過Shell腳本實現一個全方面的系統性能分析系統

      1.利用select循環實現系統工具箱

      2.命令技巧

      3.整個腳本實現方式

      4.改造成函數

      4.1函數文件內容

      4.2腳本內容

      5.執行腳本顯示所有內容

      1.利用select循環實現系統工具箱

      select格式和for格式一致,但是select 變量名 in xxx xxx都將打印成菜單

      #!/bin/bash PS3=“enter parment: ” select xtgjx in disk_info filesystem_info ip_info mem_info cpu_info quit do case $xtgjx in disk_info) lsblk ;; filesystem_info) df -HT ;; ip_info) ifconfig | awk '/inet/{if(~/([0-9]{1,3}.){3}[0-9]{1,3}/){print }}' ;; mem_info) free -g ;; cpu_info) uptime ;; quit) break ;; *) echo "error parment" esac done 執行:./select_xtgjx.sh 1) disk_info 3) ip_info 5) cpu_info 2) filesystem_info 4) mem_info 6) quit #? 1 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 49G 0 part ├─centos-root 253:0 0 47G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 100G 0 disk └─sdb1 8:17 0 100G 0 part /my_scripts sr0 11:0 1 4.3G 0 rom /media #? 如果覺得#?不好看可以重新定義PS3的變量值進行更改,定義時變量值一定要加引號 ./select_xtgjx.sh 1) disk_info 3) ip_info 5) cpu_info 2) filesystem_info 4) mem_info 6) quit enter parment: 如果希望每次執行完都彈出菜單,可以套一個while循環,在沒執行完菜單對應的命令后執行一個break跳出當前循環,也就是跳出select循環,雖然跳出了select循環但是還有while循環因此可以實現每執行一部分就顯示菜單內容 PS3="enter parment: " while : do select xtgjx in disk_info filesystem_info ip_info mem_info cpu_info quit do case $xtgjx in disk_info) lsblk break ;; filesystem_info) df -HT break ;; ip_info) ifconfig | awk '/inet/{if(~/([0-9]{1,3}.){3}[0-9]{1,3}/){print }}' break ;; mem_info) free -g break ;; cpu_info) uptime break ;; quit) exit ;; *) echo "error parment" esac done done

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      68

      69

      70

      71

      72

      73

      74

      75

      76

      77

      78

      79

      80

      81

      82

      83

      84

      2.命令技巧

      其中使用了NR==3表示遇到第三行才會模式匹配 UTIL=`vmstat | awk '{if(NR==3){print 100-"%"}}'` 這里用到了iostat命令,-d表示打印磁盤,-x表示列出詳細信息 詳細的iostat參數解釋參照:https://www.jellythink.com/archives/438 WRITE=`iostat -d -x | awk '/^[s|v]/{OFS=":";print ,"KB"}'` 過濾出每塊磁盤的大小 這里可以直接/Disk/不用加.*因為我們用到了&&還要匹配下一個規則,因為我們要打印第二列磁盤名字和第三列磁盤的大小,由于磁盤大小由小數點,因此我們使用printf 使用參數%d只顯示整數,由于printf將值都顯示在一行,因此最后我們使用print打印一個GB然后換行 精確匹配 fdisk -l | awk '/^Disk.*bytes/ && /\/dev/{printf " ";printf "%d",;print "GB"}' 差異匹配1 fdisk -l | awk '/^Disk/ && /\/dev/{printf ;printf "%d",;print "GB"}' 差異匹配2 fdisk -l | awk '/^Disk.*bytes/{printf " ";printf "%d",;print "GB"}' 不使用printf實現 fdisk -l | awk '/^Disk.*bytes/{print ,int()"GB"}' 如果變量內容由多行,引用是請用{}引起來例如 使用echo -e是為了支持反斜杠中的轉義操作例如下面使用的\n表示換行 echo -e "disk total: \n${DISK_TOTAL}" 1.cpu利用率與負載實現方式: 定義i的值然后進行while循環,然后使用vmstat+awk過濾出util、user、sys、wait的分別對應的值如vmstat | awk '{if(NR==3){print "%"}}',然后在用echo列出這些變量值 2.磁盤io負載實現方式: 定義while循環,使用iostat+wak過濾出util、read、write、iowait的列如iostat -d -x | awk '/^[s|v]/{OFS=": ";print ,$NF"%"}'然后用echo打印出來 3.磁盤使用率: 定義日志文件,然后使用fdisk -l awk過濾出磁盤名、大小,在用df命令過濾出磁盤的使用率,寫一個for循環,如果使用率大于90就打印出90的那個磁盤名,最后echo 超過90的磁盤名和實際使用率并輸出到日志we文件中,然后循環結束,打印出總量,在判斷日志文件是否存在,如果存在就把日志內容輸出,不存在則說沒有磁盤使用率超過90% 4.求磁盤利用率、磁盤inode節點,一般實現思路為:首先定義日志文件存放路徑,然后定義磁盤的空間大小、磁盤使用率(用printf "%d",的形式取出數值)/inode值,然后使用for循環遍歷值列表,如果i的值大于90則打印出哪一列對應的磁盤名,最后echo出磁盤名加使用率追加到日志文件中,然后使用if語句判斷是否存在該日志文件,如果有則cat這個文件,并刪掉,如果沒有就提示沒有超過90% 5.內存使用率 使用free -m結合awk打印出total、used、free、cache的值free -m | awk '{if(NR==2){printf "%.1f",/1024;print "G"}}',然后用echo輸出 兩種形式顯示內存的大小,因為由于是虛擬機因此內存只有512M,所以我們使用printf來打印出浮點數 保留1位小數點,然后用公式算一下最后打印個G free -m | awk '{if(NR==2){printf "%.1f",/1024;print "G"}}' free -m | awk '{if(NR==2){printf "%.1f",/1024}} END{print "G"}' 6.tcp狀態 直接上命令,然后打印netstat -ant | awk '/^tcp/{state[$NF]++} END{for (i in state){print i,state[i]}}' 統計tcp狀態 netstat -ant | awk '/^tcp/{state[$NF]++} END{for (i in state){print i,state[i]}}' ss -ant | awk '!/State/{state[]++} END{for(i in state){print i,state[i]}}' 7.打印占用CPU最多的前十個進程 第一種 使用ps命令結合awk命令判斷第三列如果大于0.1(因為如果CPU不大于0.1,匹配沒有意義)那么就使用printf(不會換行)打印“PID:”在打印出第二列的值,在打印一個”CPU:“并且打印出第三列的值,在打印一個---->,清晰,打印完后,我們用到了for循環,因為每一個進程都有不同的參數,所以我們無法確定他有多少列,因此我們使用for循環如果i小于NF也就是字段數,那么每次加1,在使用if判斷是否等于NF如果等于那么就說明打印到了最后一個參數,然后我們就換行,否則的話就一直打印,知道打印到最后一列,然后進行換行,這樣可以有效地把進程所有參數打印出來 ps aux | awk '{if(>0.1){{printf "PID: " " CPU: " "%----->"}for(i=11;i<=NF;i++)if(i==NF)printf $i"\n";else printf $i}}' 第二種比較直觀 ps axu | awk '{if(>0.1){print "PID: ","CPU: ","------>",$NF}}' | sort -k4 | head -10 cputop10實現思路 首先定義CPU日志文件,然后設置i的值,并開始while循環,$i -le 3循環三次,在循環體中,使用ps命令結合awk命令,打印出pid、cpu、進程命令,使用sort命令排序別結合head只顯示前10個,然后追加到日志文件中,在使用if判斷,日志文件是否為空,不為空打印文件內容,為空就打印沒有進程占用CPU,打印前10個進程占用的命令:ps aux | awk '{if(>0.1){{printf "PID: " " CPU:" "%--->"}for (i=11;i<=NF;i++)if(i==NF)printf $i"\n";else printf $i}}',if后面使用雙{}是為了將f or也連接在一起,當第一個if成立后面的for才會執行,如果是一個{}那么不管條件成不成立都會全部打印一下最后一列 也可以直接這看 ps aux | awk '{if(>0.1){print

      其中使用了NR==3表示遇到第三行才會模式匹配 UTIL=`vmstat | awk '{if(NR==3){print 100-$15"%"}}'` 這里用到了iostat命令,-d表示打印磁盤,-x表示列出詳細信息 詳細的iostat參數解釋參照:https://www.jellythink.com/archives/438 WRITE=`iostat -d -x | awk '/^[s|v]/{OFS=":";print $1,$7"KB"}'` 過濾出每塊磁盤的大小 這里可以直接/Disk/不用加.*因為我們用到了&&還要匹配下一個規則,因為我們要打印第二列磁盤名字和第三列磁盤的大小,由于磁盤大小由小數點,因此我們使用printf 使用參數%d只顯示整數,由于printf將值都顯示在一行,因此最后我們使用print打印一個GB然后換行 精確匹配 fdisk -l | awk '/^Disk.*bytes/ && /\/dev/{printf $2" ";printf "%d",$3;print "GB"}' 差異匹配1 fdisk -l | awk '/^Disk/ && /\/dev/{printf $2;printf "%d",$3;print "GB"}' 差異匹配2 fdisk -l | awk '/^Disk.*bytes/{printf $2" ";printf "%d",$3;print "GB"}' 不使用printf實現 fdisk -l | awk '/^Disk.*bytes/{print $2,int($3)"GB"}' 如果變量內容由多行,引用是請用{}引起來例如 使用echo -e是為了支持反斜杠中的轉義操作例如下面使用的\n表示換行 echo -e "disk total: \n${DISK_TOTAL}" 1.cpu利用率與負載實現方式: 定義i的值然后進行while循環,然后使用vmstat+awk過濾出util、user、sys、wait的分別對應的值如vmstat | awk '{if(NR==3){print $13"%"}}',然后在用echo列出這些變量值 2.磁盤io負載實現方式: 定義while循環,使用iostat+wak過濾出util、read、write、iowait的列如iostat -d -x | awk '/^[s|v]/{OFS=": ";print $1,$NF"%"}'然后用echo打印出來 3.磁盤使用率: 定義日志文件,然后使用fdisk -l awk過濾出磁盤名、大小,在用df命令過濾出磁盤的使用率,寫一個for循環,如果使用率大于90就打印出90的那個磁盤名,最后echo 超過90的磁盤名和實際使用率并輸出到日志we文件中,然后循環結束,打印出總量,在判斷日志文件是否存在,如果存在就把日志內容輸出,不存在則說沒有磁盤使用率超過90% 4.求磁盤利用率、磁盤inode節點,一般實現思路為:首先定義日志文件存放路徑,然后定義磁盤的空間大小、磁盤使用率(用printf "%d",$5的形式取出數值)/inode值,然后使用for循環遍歷值列表,如果i的值大于90則打印出哪一列對應的磁盤名,最后echo出磁盤名加使用率追加到日志文件中,然后使用if語句判斷是否存在該日志文件,如果有則cat這個文件,并刪掉,如果沒有就提示沒有超過90% 5.內存使用率 使用free -m結合awk打印出total、used、free、cache的值free -m | awk '{if(NR==2){printf "%.1f",$2/1024;print "G"}}',然后用echo輸出 兩種形式顯示內存的大小,因為由于是虛擬機因此內存只有512M,所以我們使用printf來打印出浮點數 保留1位小數點,然后用公式算一下最后打印個G free -m | awk '{if(NR==2){printf "%.1f",$2/1024;print "G"}}' free -m | awk '{if(NR==2){printf "%.1f",$2/1024}} END{print "G"}' 6.tcp狀態 直接上命令,然后打印netstat -ant | awk '/^tcp/{state[$NF]++} END{for (i in state){print i,state[i]}}' 統計tcp狀態 netstat -ant | awk '/^tcp/{state[$NF]++} END{for (i in state){print i,state[i]}}' ss -ant | awk '!/State/{state[$1]++} END{for(i in state){print i,state[i]}}' 7.打印占用CPU最多的前十個進程 第一種 使用ps命令結合awk命令判斷第三列如果大于0.1(因為如果CPU不大于0.1,匹配沒有意義)那么就使用printf(不會換行)打印“PID:”在打印出第二列的值,在打印一個”CPU:“并且打印出第三列的值,在打印一個---->,清晰,打印完后,我們用到了for循環,因為每一個進程都有不同的參數,所以我們無法確定他有多少列,因此我們使用for循環如果i小于NF也就是字段數,那么每次加1,在使用if判斷是否等于NF如果等于那么就說明打印到了最后一個參數,然后我們就換行,否則的話就一直打印,知道打印到最后一列,然后進行換行,這樣可以有效地把進程所有參數打印出來 ps aux | awk '{if($3>0.1){{printf "PID: "$2 " CPU: "$3 "%----->"}for(i=11;i<=NF;i++)if(i==NF)printf $i"\n";else printf $i}}' 第二種比較直觀 ps axu | awk '{if($3>0.1){print "PID: "$2,"CPU: "$3,"------>",$NF}}' | sort -k4 | head -10 cputop10實現思路 首先定義CPU日志文件,然后設置i的值,并開始while循環,$i -le 3循環三次,在循環體中,使用ps命令結合awk命令,打印出pid、cpu、進程命令,使用sort命令排序別結合head只顯示前10個,然后追加到日志文件中,在使用if判斷,日志文件是否為空,不為空打印文件內容,為空就打印沒有進程占用CPU,打印前10個進程占用的命令:ps aux | awk '{if($3>0.1){{printf "PID: "$2 " CPU:" $3 "%--->"}for (i=11;i<=NF;i++)if(i==NF)printf $i"\n";else printf $i}}',if后面使用雙{}是為了將f or也連接在一起,當第一個if成立后面的for才會執行,如果是一個{}那么不管條件成不成立都會全部打印一下最后一列 也可以直接這看 ps aux | awk '{if($3>0.1){print $0}}' | head -10 8.memtop10實現思路和cputop10一樣 9.網卡流量 1M=1024Kb/8bit=128KB 網卡流量中RX是接受,TX是發送,6和7的位置不同,6中RX、TX位于第8行,RX是第4列,TX是低9列,而7中RX位于第五行TX位于第7行都是第5列 也可以根據RX或者TX查找 RX=ifconfig ens33 | awk '/bytes/{if(NR==5){print $5} else if(NR==8){print $4}}' TX=ifconfig ens33 | awk '/bytes/{if(NR==7){print $5} else if(NR==8){print $9}}' 網絡流量實現方式 首先寫一個死循環,使用read提示用戶檢查那塊網卡的流量,用戶輸的網卡存在則跳出循環,在寫一個循環,循環三次,其中先定義rx和tx的值,然后sleep 1秒在重新定義一個值,因為每秒都會發生改變,最后定義IN的變量(也就是RX)用一秒后的值減去1秒前的值除于1024在除于128,除于1024是為了得到Kb除于128是為了得出多少M最后打印出RX的值和TX的值

      }}' | head -10 8.memtop10實現思路和cputop10一樣 9.網卡流量 1M=1024Kb/8bit=128KB 網卡流量中RX是接受,TX是發送,6和7的位置不同,6中RX、TX位于第8行,RX是第4列,TX是低9列,而7中RX位于第五行TX位于第7行都是第5列 也可以根據RX或者TX查找 RX=ifconfig ens33 | awk '/bytes/{if(NR==5){print } else if(NR==8){print }}' TX=ifconfig ens33 | awk '/bytes/{if(NR==7){print } else if(NR==8){print }}' 網絡流量實現方式 首先寫一個死循環,使用read提示用戶檢查那塊網卡的流量,用戶輸的網卡存在則跳出循環,在寫一個循環,循環三次,其中先定義rx和tx的值,然后sleep 1秒在重新定義一個值,因為每秒都會發生改變,最后定義IN的變量(也就是RX)用一秒后的值減去1秒前的值除于1024在除于128,除于1024是為了得到Kb除于128是為了得出多少M最后打印出RX的值和TX的值

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      68

      69

      3.整個腳本實現方式

      #!/bin/bash #系統性能分析工具 #檢測操作系統版本 YELLOW_COLOR='\e[033m' #黃 RED_COLOR='\e[031m' #紅 GREEN_COLOR='\e[032m' #綠 BLUE_COLOR='\e[034m' #藍 BLACK_COLOR='\e[0m' #黑 PINK_COLOR='\e[035m' #粉 os_check() { if [ -e /etc/redhat-release ];then LINUX1=$(cat /etc/redhat-release | cut -d' ' -f1) else LINUX2=$(cat /etc/issue | awk '{print }') fi if [ "$LINUX1" == "CentOS" -o "$LINUX1" == "RedHat" ];then P_M=yum elif [ "$LINUX2" == "Ubuntu" -o "$LINUX2" == "ubuntu" ];then P_M=apt-get else echo "error system" exit 1 fi } #檢測是否是root登錄的系統 if [ $LOGNAME != root ];then echo -e "${RED_COLOR}請使用root用戶操作${BLACK_COLOR}" exit 2 fi #檢測是否安裝vmstat if ! which vmstat &>/dev/null;then echo -e "${RED_COLOR}vmstat 命令沒有安裝,現在開始安裝...${BLACK_COLOR}" os_check $P_M -y install vmstat if [ $? -eq 0 ];then echo "-------------------------------------------------------------" fi fi #檢測是否安裝iostat which iostat &>/dev/null if [ $? -ne 0 ];then echo -e "${RED_COLOR}iostat 命令沒有安裝,現在開始安裝...${BLACK_COLOR}" os_check $P_M -y install iostat if [ $? -eq 0 ];then echo "-------------------------------------------------------------" fi fi #使用select構造菜單并添加每個菜單需要執行的命令 while : do select menu in cpu_load disk_load disk_use disk_inode mem_use tcp_status cpu_top10 mem_top10 traffic clearscreen quit do case $menu in cpu_load) #CPU利用率與負載 echo "------------------------------------" i=1 while [[ $i -le 3 ]] do echo -e "${GREEN_COLOR}參數值$i ${BLACK_COLOR}" UTIL=`vmstat | awk '{if(NR==3){print 100-"%"}}'` #第15列是id對應的列,表示空閑的,用100減去空閑的就是已經使用的 USER=`vmstat | awk '{if(NR==3){print "%"}}'` #第13列是us對應的列,這里表示已使用的CPU中用戶占用了多少 SYS=`vmstat |awk '{if(NR==3){print "%"}}'` #第14列是sy對應的列,這里表示已使用的CPU中系統占了多少 IOWAIT=`vmstat | awk '{if(NR==3){print $(NF -1)"%"}}'` #倒數第二列也就是16列,這里表示IOwait在cpu中占用了多少 echo "cpu used: $UTIL" echo "user used: $USER" echo "system used: $SYS" echo "io wait used: $IOWAIT" let i++ sleep 1 done echo "------------------------------------" break ;; disk_load) #磁盤I/O負載 echo "------------------------------------" i=1 while [[ $i -le 3 ]] do echo -e "${GREEN_COLOR}參數值$i ${BLACK_COLOR}" UTIL=`iostat -d -x | awk '/^[s|v]/{OFS=": ";print ,$NF"%"}'` #util是IO消耗的CPU占比,-d,-x參數分別表示只列出磁盤和詳細信息 READ=`iostat -d -x | awk '/^[s|v]/{OFS=": ";print ,"KB"}'` #打印出每秒向磁盤讀多少字節數 WRITE=`iostat -d -x | awk '/^[s|v]/{OFS=":";print ,"KB"}'` #打印出每秒向磁盤寫多少字節數 IOWAIT=`vmstat | awk '{if(NR==3){print $(NF-1)"%"}}'` echo -e "UTIL:" echo -e "${UTIL}" echo -e "io wait used: $IOWAIT" echo -e "Read/s: \n$READ" echo -e "Write/s: \n$WRITE" i=$(($i+1)) sleep 1 done echo "------------------------------------" break ;; disk_use) #磁盤使用率 DISK_LOG=/tmp/disk_user.log #磁盤使用日志存放路徑 DISK_TOTAL=`fdisk -l | awk '/^Disk.*bytes/{print ,int()"GB"}'` #打印出磁盤對應的大小 DISK_USED=`df -h | awk '/^\/dev/{print int($(NF-1))}'` #打印出磁盤的使用率 for i in $DISK_USED #遍歷一下,因為不止一塊磁盤 do if [ $i -ge 90 ];then DISK_NAME=`df -h | awk '{if(int()=='''$i'''){print }}'` #如果第五列磁盤使用率等于循環中i的值那么就打印第六列 echo "${DISK_NAME} used is ${i}%..." >> $DISK_LOG #將磁盤的名字和使用率對應起來追加到日志中 fi done echo -e "disk total: \n${DISK_TOTAL}" if [ -e $DISK_LOG ];then echo "------------------------------------" df -h | awk '/^\/dev/{print ":",}' #如果使用了df -hT則先是, echo cat $DISK_LOG echo "------------------------------------" rm -rf $DISK_LOG else echo "------------------------------------" df -h | awk '/^\/dev/{print ":",}' #如果使用了df -hT則先是, echo echo -e "${BLUE_COLOR}Disk used no more than 90%...${BLACK_COLOR}" #當前磁盤使用率沒有超過90%的 echo "------------------------------------" fi break ;; disk_inode) #磁盤inodes DKINODE_LOG=/tmp/disk_inode.log DISK_INODE=`df -i | akw '/^\/dev/{print int()}'` #df -i表示打印inode節點值 for i in $DISK_INODE do if [ $i -ge 90 ];then DISK_INODE_NAME=`df -i | awk '{if(int()=='''$i'''){print }}'` echo "$DISK_INODE_NAME inodes is ${i}%" >> $DKINODE_LOG fi done if [ -e $DKINODE_LOG ];then echo "------------------------------------" df -i | awk '/^\/dev/{print ":"}' echo cat $DKINODE_LOG echo "------------------------------------" else echo "------------------------------------" df -i | awk '/^\/dev/{print ":"}' echo echo -e "${BLUE_COLOR}Disk inodes no more than 90%...${BLACK_COLOR}" echo "------------------------------------" fi break ;; mem_use) MEM_TOTAL=`free -m | awk '{if(NR==2){printf "%.1f",/1024;print "G"}}'` #%.1f表示取小數點1位 MEM_USED=`free -m | awk '{if(NR==2){printf "%.1f",/1024}} END{print "G"}'` MEM_FREE=`free -m | awk '{if(NR==2){printf "%.1f",/1024;print "G"}}'` MEM_CACHE=`free -m | awk '{if(NR==2){printf "%.1f",/1024;print "G"}}'` echo "------------------------------------" echo -e "memory total is ${MEM_TOTAL}" echo -e "memory used is ${MEM_USED}" echo -e "memory free is ${MEM_FREE}" echo -e "memory cache is ${MEM_CACHE}" MEM_FREE_INT=`free -m | awk '{if(NR==2){printf "%d",/1024}}'` if [ $MEM_FREE_INT -le 0 ];then echo -en "${YELLOW_COLOR}mree memory is very low, if we need to clear the cache [y|n]: ${BLACK_COLOR}" read action case $action in y|Y) sync echo 3 > /proc/sys/vm/drop_caches echo -e "${PINK_COLOR}clear mem ok...${BLACK_COLOR}" ;; n|N) ;; esac fi echo "------------------------------------" break ;; tcp_status) #tcp連接狀態 TCP_CONNECT=`netstat -ant | awk '/^tcp/{state[$NF]++} END{for (i in state){print i,state[i]}}'` echo "------------------------------------" echo -e "${YELLOW_COLOR}tcp connection status: ${BLACK_COLOR} \n$TCP_CONNECT" echo "------------------------------------" break ;; cpu_top10) #查看占用cpu最高的前十個進程 echo "------------------------------------" CPU_LOG=/tmp/cpu_top10.log i=1 while [[ $i -le 3 ]] do ps aux | awk '{if(>0.1){{printf "PID: " " CPU: " "%----->"} for(i=11;i<=NF;i++)if(i==NF)printf $i"\n";else printf $i}}' | sort -k4 -nr | head -10 >> $CPU_LOG #循環吃那個11列開始,如果i的值等于最后一列則換行,否則就一直打印直到最后一行 if [[ -n `cat $CPU_LOG` ]];then #查看日志中是否有文件 echo -e "${GREEN_COLOR}參數值$i ${BLACK_COLOR}" cat $CPU_LOG > $CPU_LOG else echo -e "${RED_COLOR}No process using the CPU${BLACK_COLOR}" #沒有進程使用CPU break fi let i++ sleep 1 done rm -rf $CPU_LOG echo "------------------------------------" break ;; mem_top10) #查看占用內存最高的前十個進程 echo "------------------------------------" MEM_LOG=/tmp/mem_top10.log i=1 while [[ $i -le 3 ]] do ps aux | awk '{if(>0.1){{printf "PID: " " MEM: " "%----->"} for(i=11;i<=NF;i++)if(i==NF)printf $i"\n";else printf $i}}' | sort -k4 -nr | head -10 > $MEM_LOG if [[ -n `cat $MEM_LOG` ]];then echo -e "${GREEN_COLOR}參數值$i ${BLACK_COLOR}" cat $MEM_LOG > $MEM_LOG else echo -e "${RED_COLOR}No process using the memory${BLACK_COLOR}" fi let i++ sleep 1 done rm -rf $MEM_LOG echo "------------------------------------" break ;; traffic) #檢測網絡流量 while true ;do echo -en "${YELLOW_COLOR}請輸入要檢測的網卡名稱:${BLACK_COLOR}" read network_cord NET_CORD_EX=`ifconfig | grep -c "$network_cord"` #if [ `ifconfig | grep -c "$network_cord"` -eq 1 ];then if [ $NET_CORD_EX -eq 1 ];then break else echo -e "${RED_COLOR}沒有 '${network_cord}' 這塊網卡,請重新輸入${BLACK_COLOR}" fi done echo "------------------------------------" echo -e "${BLUE_COLOR}IN------OUT${BLACK_COLOR}" i=1 while [[ $i -le 3 ]] do #centos6/7中ifconfig顯示的內容略有差異 #centos6中rx與tx行號位于8 rx是接收也就是in #centos7中rx位于5,tx位于7 tx是發送也就是out RX_IN=`ifconfig $network_cord | awk '/bytes/{if(NR==5){print } else if(NR==8){print }}'` TX_OUT=`ifconfig $network_cord | awk '/bytes/{if(NR==7){print } else if(NR==8){print }}'` sleep 1 RX_IN_NEW=`ifconfig $network_cord | awk '/bytes/{if(NR==5){print } else if(NR==8){print }}'` TX_OUT_NEW=`ifconfig $network_cord | awk '/bytes/{if(NR==7){print } else if(NR==8){print }}'` IN=`awk 'BEGIN{printf "%.1f",'$(($RX_IN_NEW-$RX_IN))'/1024/128}'` OUT=`awk 'BEGIN{printf "%.1f",'$(($TX_OUT_NEW-$TX_OUT))'/1024/128}'` echo -e "${PINK_COLOR}RX IN is ${IN}MB/s,TX OUT is ${OUT}MB/s${BLACK_COLOR}" let i++ sleep 1 done echo "------------------------------------" break ;; clearscreen) clear break ;; quit) exit 3 ;; *) echo "enter number" ;; esac done done

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      68

      69

      70

      71

      72

      73

      74

      75

      76

      77

      78

      79

      80

      81

      82

      83

      84

      85

      86

      87

      88

      89

      90

      91

      92

      93

      94

      95

      96

      97

      98

      99

      100

      101

      102

      103

      104

      105

      106

      107

      108

      109

      110

      111

      112

      113

      114

      115

      116

      117

      118

      119

      120

      121

      122

      123

      124

      125

      126

      127

      128

      129

      130

      131

      132

      133

      134

      135

      136

      137

      138

      139

      140

      141

      142

      143

      144

      145

      146

      147

      148

      149

      150

      151

      152

      153

      154

      155

      156

      157

      158

      159

      160

      161

      162

      163

      164

      165

      166

      167

      168

      169

      170

      171

      172

      173

      174

      175

      176

      177

      178

      179

      180

      181

      182

      183

      184

      185

      186

      187

      188

      189

      190

      191

      192

      193

      194

      195

      196

      197

      198

      199

      200

      201

      202

      203

      204

      205

      206

      207

      208

      209

      210

      211

      212

      213

      214

      215

      216

      217

      218

      219

      220

      221

      222

      223

      224

      225

      226

      227

      228

      229

      230

      231

      232

      233

      234

      235

      236

      237

      238

      239

      240

      241

      242

      243

      244

      245

      246

      247

      248

      249

      250

      251

      252

      253

      254

      255

      256

      257

      258

      259

      260

      261

      262

      263

      264

      265

      266

      267

      268

      269

      270

      271

      272

      273

      274

      275

      276

      277

      278

      279

      280

      281

      282

      283

      284

      285

      286

      287

      288

      4.改造成函數

      4.1函數文件內容

      #!/bin/bash #系統性能分析工具 #檢測操作系統版本 os_check() { if [ -e /etc/redhat-release ];then LINUX1=$(cat /etc/redhat-release | cut -d' ' -f1) else LINUX2=$(cat /etc/issue | awk '{print }') fi if [ "$LINUX1" == "CentOS" -o "$LINUX1" == "RedHat" ];then P_M=yum elif [ "$LINUX2" == "Ubuntu" -o "$LINUX2" == "ubuntu" ];then P_M=apt-get else echo "error system" exit 1 fi } cpu_load_fy() { #CPU負載 echo "------------------------------------" i=1 while [[ $i -le 3 ]] do echo -e "${GREEN_COLOR}參數值$i ${BLACK_COLOR}" UTIL=`vmstat | awk '{if(NR==3){print 100-"%"}}'` #第15列是id對應的列,表示空閑的,用100減去空閑的就是已經使用的 USER=`vmstat | awk '{if(NR==3){print "%"}}'` #第13列是us對應的列,這里表示已使用的CPU中用戶占用了多少 SYS=`vmstat |awk '{if(NR==3){print "%"}}'` #第14列是sy對應的列,這里表示已使用的CPU中系統占了多少 IOWAIT=`vmstat | awk '{if(NR==3){print $(NF -1)"%"}}'` #倒數第二列也就是16列,這里表示IOwait在cpu中占用了多少 echo "cpu used: $UTIL" echo "user used: $USER" echo "system used: $SYS" echo "io wait used: $IOWAIT" let i++ sleep 1 done echo "------------------------------------" break } disk_load_fy() { #磁盤I/O負載 echo "------------------------------------" i=1 while [[ $i -le 3 ]] do echo -e "${GREEN_COLOR}參數值$i ${BLACK_COLOR}" UTIL=`iostat -d -x | awk '/^[s|v]/{OFS=": ";print ,$NF"%"}'` #util是IO消耗的CPU占比,-d,-x參數分別表示只列出磁盤和詳細信息 READ=`iostat -d -x | awk '/^[s|v]/{OFS=": ";print ,"KB"}'` #打印出每秒向磁盤讀多少字節數 WRITE=`iostat -d -x | awk '/^[s|v]/{OFS=":";print ,"KB"}'` #打印出每秒向磁盤寫多少字節數 IOWAIT=`vmstat | awk '{if(NR==3){print $(NF-1)"%"}}'` echo -e "UTIL:" echo -e "${UTIL}" echo -e "io wait used: $IOWAIT" echo -e "Read/s: \n$READ" echo -e "Write/s: \n$WRITE" i=$(($i+1)) sleep 1 done echo "------------------------------------" break } disk_use_fy() { #磁盤使用率 DISK_LOG=/tmp/disk_user.log #磁盤使用日志存放路徑 DISK_TOTAL=`fdisk -l | awk '/^Disk.*bytes/{print ,int()"GB"}'` #打印出磁盤對應的大小 DISK_USED=`df -h | awk '/^\/dev/{print int($(NF-1))}'` #打印出磁盤的使用率 for i in $DISK_USED #遍歷一下,因為不止一塊磁盤 do if [ $i -ge 90 ];then DISK_NAME=`df -h | awk '{if(int()=='''$i'''){print }}'` #如果第五列磁盤使用率等于循環中i的值那么就打印第六列 echo "${DISK_NAME} used is ${i}%..." >> $DISK_LOG #將磁盤的名字和使用率對應起來追加到日志中 fi done echo -e "disk total: \n${DISK_TOTAL}" if [ -e $DISK_LOG ];then echo "------------------------------------" df -h | awk '/^\/dev/{print ":",}' #如果使用了df -hT則先是, echo cat $DISK_LOG echo "------------------------------------" rm -rf $DISK_LOG else echo "------------------------------------" df -h | awk '/^\/dev/{print ":",}' #如果使用了df -hT則先是, echo echo -e "${BLUE_COLOR}Disk used no more than 90%...${BLACK_COLOR}" #當前磁盤使用率沒有超過90%的 echo "------------------------------------" fi break } disk_inode_fy() { #磁盤inodes DKINODE_LOG=/tmp/disk_inode.log DISK_INODE=`df -i | akw '/^\/dev/{print int()}'` #df -i表示打印inode節點值 for i in $DISK_INODE do if [ $i -ge 90 ];then DISK_INODE_NAME=`df -i | awk '{if(int()=='''$i'''){print }}'` echo "$DISK_INODE_NAME inodes is ${i}%" >> $DKINODE_LOG fi done if [ -e $DKINODE_LOG ];then echo "------------------------------------" df -i | awk '/^\/dev/{print ":"}' echo cat $DKINODE_LOG echo "------------------------------------" else echo "------------------------------------" df -i | awk '/^\/dev/{print ":"}' echo echo -e "${BLUE_COLOR}Disk inodes no more than 90%...${BLACK_COLOR}" echo "------------------------------------" fi break } mem_use_fy() { MEM_TOTAL=`free -m | awk '{if(NR==2){printf "%.1f",/1024;print "G"}}'` #%.1f表示取小數點1位 MEM_USED=`free -m | awk '{if(NR==2){printf "%.1f",/1024}} END{print "G"}'` MEM_FREE=`free -m | awk '{if(NR==2){printf "%.1f",/1024;print "G"}}'` MEM_CACHE=`free -m | awk '{if(NR==2){printf "%.1f",/1024;print "G"}}'` echo "------------------------------------" echo -e "memory total is ${MEM_TOTAL}" echo -e "memory used is ${MEM_USED}" echo -e "memory free is ${MEM_FREE}" echo -e "memory cache is ${MEM_CACHE}" MEM_FREE_INT=`free -m | awk '{if(NR==2){printf "%d",/1024}}'` if [ $MEM_FREE_INT -le 0 ];then echo -en "${YELLOW_COLOR}mree memory is very low, if we need to clear the cache [y|n]: ${BLACK_COLOR}" read action case $action in y|Y) sync echo 3 > /proc/sys/vm/drop_caches echo -e "${PINK_COLOR}clear mem ok...${BLACK_COLOR}" ;; n|N) ;; esac fi echo "------------------------------------" break } tcp_status_fy() { #tcp連接狀態 TCP_CONNECT=`netstat -ant | awk '/^tcp/{state[$NF]++} END{for (i in state){print i,state[i]}}'` echo "------------------------------------" echo -e "${YELLOW_COLOR}tcp connection status: ${BLACK_COLOR} \n$TCP_CONNECT" echo "------------------------------------" break } cpu_top10_fy() { #查看占用cpu最高的前十個進程 echo "------------------------------------" CPU_LOG=/tmp/cpu_top10.log i=1 while [[ $i -le 3 ]] do ps aux | awk '{if(>0.1){{printf "PID: " " CPU: " "%----->"} for(i=11;i<=NF;i++)if(i==NF)printf $i"\n";else printf $i}}' | sort -k4 -nr | head -10 >> $CPU_LOG #循環吃那個11列開始,如果i的值等于最后一列則換行,否則就一直打印直到最后一行 if [[ -n `cat $CPU_LOG` ]];then #查看日志中是否有文件 echo -e "${GREEN_COLOR}參數值$i ${BLACK_COLOR}" cat $CPU_LOG > $CPU_LOG else echo -e "${RED_COLOR}No process using the CPU${BLACK_COLOR}" #沒有進程使用CPU break fi let i++ sleep 1 done rm -rf $CPU_LOG echo "------------------------------------" break } mem_top10_fy() { #查看占用內存最高的前十個進程 echo "------------------------------------" MEM_LOG=/tmp/mem_top10.log i=1 while [[ $i -le 3 ]] do ps aux | awk '{if(>0.1){{printf "PID: " " MEM: " "%----->"} for(i=11;i<=NF;i++)if(i==NF)printf $i"\n";else printf $i}}' | sort -k4 -nr | head -10 > $MEM_LOG if [[ -n `cat $MEM_LOG` ]];then echo -e "${GREEN_COLOR}參數值$i ${BLACK_COLOR}" cat $MEM_LOG > $MEM_LOG else echo -e "${RED_COLOR}No process using the memory${BLACK_COLOR}" fi let i++ sleep 1 done rm -rf $MEM_LOG echo "------------------------------------" break } traffic_fy() { #檢測網絡流量 while true ;do echo -en "${YELLOW_COLOR}請輸入要檢測的網卡名稱:${BLACK_COLOR}" read network_cord NET_CORD_EX=`ifconfig | grep -c "$network_cord"` #if [ `ifconfig | grep -c "$network_cord"` -eq 1 ];then if [ $NET_CORD_EX -eq 1 ];then break else echo -e "${RED_COLOR}沒有 '${network_cord}' 這塊網卡,請重新輸入${BLACK_COLOR}" fi done echo "------------------------------------" echo -e "${BLUE_COLOR}IN------OUT${BLACK_COLOR}" i=1 while [[ $i -le 3 ]] do #centos6/7中ifconfig顯示的內容略有差異 #centos6中rx與tx行號位于8 rx是接收也就是in #centos7中rx位于5,tx位于7 tx是發送也就是out RX_IN=`ifconfig $network_cord | awk '/bytes/{if(NR==5){print } else if(NR==8){print }}'` TX_OUT=`ifconfig $network_cord | awk '/bytes/{if(NR==7){print } else if(NR==8){print }}'` sleep 1 RX_IN_NEW=`ifconfig $network_cord | awk '/bytes/{if(NR==5){print } else if(NR==8){print }}'` TX_OUT_NEW=`ifconfig $network_cord | awk '/bytes/{if(NR==7){print } else if(NR==8){print }}'` IN=`awk 'BEGIN{printf "%.1f",'$(($RX_IN_NEW-$RX_IN))'/1024/128}'` OUT=`awk 'BEGIN{printf "%.1f",'$(($TX_OUT_NEW-$TX_OUT))'/1024/128}'` echo -e "${PINK_COLOR}RX IN is ${IN}MB/s,TX OUT is ${OUT}MB/s${BLACK_COLOR}" let i++ sleep 1 done echo "------------------------------------" break }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      68

      69

      70

      71

      72

      73

      74

      75

      76

      77

      78

      79

      80

      81

      82

      83

      84

      85

      86

      87

      88

      89

      90

      91

      92

      93

      94

      95

      96

      97

      98

      99

      100

      101

      102

      103

      104

      105

      106

      107

      108

      109

      110

      111

      112

      113

      114

      115

      116

      117

      118

      119

      120

      121

      122

      123

      124

      125

      126

      127

      128

      129

      130

      131

      132

      133

      134

      135

      136

      137

      138

      139

      140

      141

      142

      143

      144

      145

      146

      147

      148

      149

      150

      151

      152

      153

      154

      155

      156

      157

      158

      159

      160

      161

      162

      163

      164

      165

      166

      167

      168

      169

      170

      171

      172

      173

      174

      175

      176

      177

      178

      179

      180

      181

      182

      183

      184

      185

      186

      187

      188

      189

      190

      191

      192

      193

      194

      195

      196

      197

      198

      199

      200

      201

      202

      203

      204

      205

      206

      207

      208

      209

      210

      211

      212

      213

      214

      215

      216

      217

      218

      219

      220

      221

      222

      223

      224

      225

      226

      227

      228

      229

      230

      231

      232

      233

      234

      235

      236

      237

      238

      239

      240

      241

      242

      4.2腳本內容

      #!/bin/bash #系統性能分析工具---函數實現 #檢測操作系統版本 source /my_scripts/d12_xtxnfx/fun_system.fy YELLOW_COLOR='\e[033m' #黃 RED_COLOR='\e[031m' #紅 GREEN_COLOR='\e[032m' #綠 BLUE_COLOR='\e[034m' #藍 BLACK_COLOR='\e[0m' #黑 PINK_COLOR='\e[035m' #粉 #檢測是否是root登錄的系統 if [ $LOGNAME != root ];then echo -e "${RED_COLOR}請使用root用戶操作${BLACK_COLOR}" exit 2 fi #檢測是否安裝vmstat if ! which vmstat &>/dev/null;then echo -e "${RED_COLOR}vmstat 命令沒有安裝,現在開始安裝...${BLACK_COLOR}" os_check $P_M -y install vmstat if [ $? -eq 0 ];then echo "-------------------------------------------------------------" fi fi #檢測是否安裝iostat which iostat &>/dev/null if [ $? -ne 0 ];then echo -e "${RED_COLOR}iostat 命令沒有安裝,現在開始安裝...${BLACK_COLOR}" os_check $P_M -y install iostat if [ $? -eq 0 ];then echo "-------------------------------------------------------------" fi fi #使用select構造菜單并添加每個菜單需要執行的命令 while : do select menu in cpu_load disk_load disk_use disk_inode mem_use tcp_status cpu_top10 mem_top10 traffic clearscreen quit do case $menu in cpu_load) cpu_load_fy ;; disk_load) disk_load_fy ;; disk_use) disk_use_fy ;; disk_inode) disk_inode_fy ;; mem_use) mem_use_fy ;; tcp_status) tcp_status_fy ;; cpu_top10) cpu_top10_fy ;; mem_top10) mem_top10_fy ;; traffic) traffic_fy ;; clearscreen) clear break ;; quit) exit 3 ;; *) echo "enter number" ;; esac done done

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      68

      69

      70

      71

      72

      73

      74

      75

      76

      77

      78

      79

      80

      81

      82

      83

      84

      85

      86

      5.執行腳本顯示所有內容

      函數和5的是同一個文件

      #!/bin/bash #系統性能分析工具 #執行顯示所有內容 #檢測操作系統版本 source /my_scripts/d12_xtxnfx/fun_system.fy YELLOW_COLOR='\e[033m' #黃 RED_COLOR='\e[031m' #紅 GREEN_COLOR='\e[032m' #綠 BLUE_COLOR='\e[034m' #藍 BLACK_COLOR='\e[0m' #黑 PINK_COLOR='\e[035m' #粉 #檢測是否是root登錄的系統 if [ $LOGNAME != root ];then echo -e "${RED_COLOR}請使用root用戶操作${BLACK_COLOR}" exit 2 fi #檢測是否安裝vmstat if ! which vmstat &>/dev/null;then echo -e "${RED_COLOR}vmstat 命令沒有安裝,現在開始安裝...${BLACK_COLOR}" os_check $P_M -y install vmstat if [ $? -eq 0 ];then echo "-------------------------------------------------------------" fi fi #檢測是否安裝iostat which iostat &>/dev/null if [ $? -ne 0 ];then echo -e "${RED_COLOR}iostat 命令沒有安裝,現在開始安裝...${BLACK_COLOR}" os_check $P_M -y install iostat if [ $? -eq 0 ];then echo "-------------------------------------------------------------" fi fi #使用select構造菜單并添加每個菜單需要執行的命令 echo -e "${YELLOW_COLOR}cpu_load${BLACK_COLOR}" cpu_load_fy echo echo echo -e "${YELLOW_COLOR}disk_load${BLACK_COLOR}" disk_load_fy echo echo echo -e "${YELLOW_COLOR}disk_use${BLACK_COLOR}" disk_use_fy echo echo echo -e "${YELLOW_COLOR}disk_inode${BLACK_COLOR}" disk_inode_fy echo echo echo -e "${YELLOW_COLOR}mem_use${BLACK_COLOR}" mem_use_fy echo echo echo -e "${YELLOW_COLOR}tcp_status${BLACK_COLOR}" tcp_status_fy echo echo echo -e "${YELLOW_COLOR}cpu_top10${BLACK_COLOR}" cpu_top10_fy echo echo echo -e "${YELLOW_COLOR}mem_top10${BLACK_COLOR}" mem_top10_fy echo -e "${YELLOW_COLOR}traffic${BLACK_COLOR}" traffic_fy

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      Linux系統通過Shell腳本實現一個全方面的系統性能分析系統

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      68

      69

      70

      71

      72

      73

      Linux Shell

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:SDRS服務快速入門 -為云上業務開啟容災保護
      下一篇:華為云服務器租用價格
      相關文章
      久久精品国产亚洲av麻豆小说 | 亚洲人成人无码网www国产| 亚洲一区二区三区在线观看精品中文 | 亚洲AV日韩综合一区尤物| 亚洲男同帅GAY片在线观看| 久久亚洲中文无码咪咪爱| 亚洲五月激情综合图片区| 在线观看亚洲视频| 亚洲综合成人婷婷五月网址| 久久综合图区亚洲综合图区| 亚洲欧洲中文日韩久久AV乱码| 亚洲?V无码乱码国产精品| 亚洲黄色免费网站| 亚洲精品视频免费看| 亚洲VA中文字幕不卡无码| 亚洲AⅤ优女AV综合久久久| 国产成人亚洲毛片| 亚洲精品无码日韩国产不卡?V| 亚洲色欲色欲www| 亚洲va在线va天堂va不卡下载| 亚洲国产美国国产综合一区二区| 国产亚洲成人在线播放va| 国产精品亚洲综合网站| 亚洲av麻豆aⅴ无码电影| 亚洲男人天堂2020| 亚洲区小说区激情区图片区| 亚洲国产精品无码av| 亚洲国产成人乱码精品女人久久久不卡 | 亚洲成片观看四虎永久| 亚洲爽爽一区二区三区| 亚洲精品无码永久在线观看你懂的| 亚洲韩国精品无码一区二区三区| 久久精品国产亚洲AV网站| 亚洲精品成人网站在线播放| 亚洲日本久久一区二区va| 亚洲国产精品ⅴa在线观看| 中文字幕在线观看亚洲视频| 亚洲成av人片在线天堂无| 亚洲国产精品成人一区| 亚洲精品无码MV在线观看| 蜜芽亚洲av无码精品色午夜|