亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

Shell腳本實現Linux系統和進程資源監控

2024-05-06 16:16:10
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Shell腳本實現Linux系統和進程資源監控,本文講解了檢查進程是否存在、檢測進程 CPU 利用率、檢測進程內存使用量、檢測進程句柄使用量、,需要的朋友可以參考下
 

在服務器運維過程中,經常需要對服務器的各種資源進行監控,例如:CPU的負載監控,磁盤的使用率監控,進程數目監控等等,以在系統出現異常時及時報警,通知系統管理員。本文介紹在Linux系統下幾種常見的監控需求及其shell腳本的編寫。

文章目錄:

1.Linux使用 Shell 檢查進程是否存在
2.Linux使用 Shell檢測進程 CPU 利用率
3.Linux使用 Shell檢測進程內存使用量
4.Linux使用 Shell檢測進程句柄使用量
5.Linux使用 Shell查看某個 TCP 或 UDP 端口是否在監聽
6.Linux使用 Shell查看某個進程名正在運行的個數
7.Linux使用 Shell檢測系統 CPU 負載
8.Linux使用 Shell檢測系統磁盤空間
9.總結

檢查進程是否存在

在對進程進行監控時,我們一般需要得到該進程的 ID,進程 ID 是進程的唯一標識,但是有時可能在服務器上不同用戶下運行著多個相同進程名的進程,下面的函數 GetPID 給出了獲取指定用戶下指定進程名的進程 ID 功能(目前只考慮這個用戶下啟動一個此進程名的進程),它有兩個參數為用戶名和進程名,它首先使用 ps 查找進程信息,同時通過 grep 過濾出需要的進程,最后通過 sed 和 awk 查找需要進程的 ID 值(此函數可根據實際情況修改,比如需要過濾其它信息等)。

清單 1. 對進程進行監控

 

復制代碼代碼如下:

 function GetPID #User #Name 
 { 
    PsUser=$1 
    PsName=$2 
    pid=`ps -u $PsUser|grep $PsName|grep -v grep|grep -v vi|grep -v dbx/n 
    |grep -v tail|grep -v start|grep -v stop |sed -n 1p |awk '{print $1}'` 
    echo $pid 
 }
 

 

示例演示:

1)源程序(例如查找用戶為 root,進程名為 CFTestApp 的進程 ID)

復制代碼代碼如下:

    PID=`GetPID root CFTestApp` 
 
    echo $PID

2)結果輸出

 

 

復制代碼代碼如下:

    11426 
    [dyu@xilinuxbldsrv shell]$

 

3)結果分析

從上面的輸出可見:11426 為 root 用戶下的 CFTestApp 程序的進程 ID。

4)命令介紹

1. ps: 查看系統中瞬間進程信息。 參數:-u< 用戶識別碼 > 列出屬于該用戶的程序的狀況,也可使用用戶名稱來指定。 -p< 進程識別碼 > 指定進程識別碼,并列出該進程的狀況。 -o 指定輸出格式 2. grep: 用于查找文件中符合字符串的當前行。 參數:-v 反向選擇,亦即顯示出沒有 ‘搜尋字符串' 內容的那一行。 3. sed: 一個非交互性文本編輯器,它編輯文件或標準輸入導出的文件,一次只能處理一行內容。 參數:-n 讀取下一個輸入行,用下一個命令處理新的行而不是用第一個命令。 p 標志 打印匹配行 4. awk:一種編程語言,用于在 linux/unix 下對文本和數據進行處理。數據可以來自標準輸入、一個或多個文件,或其它命令的輸出。它支持用戶自定義函數和動態正則表達式等先進功能,是 linux/unix 下的一個強大編程工具。它在命令行中使用,但更多是作為腳本來使用。awk 的處理文本和數據的方式:它逐行掃描文件,從第一行到最后一行,尋找匹配的特定模式的行,并在這些行上進行你想要的操作。如果沒有指定處理動作,則把匹配的行顯示到標準輸出 ( 屏幕 ),如果沒有指定模式,則所有被操作所指定的行都被處理。 參數:-F fs or –field-separator fs :指定輸入文件折分隔符,fs 是一個字符串或者是一個正則表達式,如 -F:。
有時有可能進程沒有啟動,下面的功能是檢查進程 ID 是否存在,如果此進程沒有運行輸出:

復制代碼代碼如下:

    The process does not exist. 
    # 檢查進程是否存在
    if [ "-$PID" == "-" ] 
    then 
    { 
        echo "The process does not exist."
    } 
    fi

 

檢測進程 CPU 利用率

在對應用服務進行維護時,我們經常遇到由于 CPU 過高導致業務阻塞,造成業務中斷的情況。CPU 過高可能由于業務量過負荷或者出現死循環等異常情況,通過腳本對業務進程 CPU 進行時時監控,可以在 CPU 利用率異常時及時通知維護人員,便于維護人員及時分析,定位,以及避免業務中斷等。下面的函數可獲得指定進程 ID 的進程 CPU 利用率。它有一個參數為進程 ID,它首先使用 ps 查找進程信息,同時通過 grep -v 過濾掉 %CPU 行,最后通過 awk 查找 CPU 利用百分比的整數部分(如果系統中有多個 CPU,CPU 利用率可以超過 100%)。

清單 2. 對業務進程 CPU 進行實時監控

 

復制代碼代碼如下:

function GetCpu 
  { 
   CpuValue=`ps -p $1 -o pcpu |grep -v CPU | awk '{print $1}' | awk -  F. '{print $1}'` 
        echo $CpuValue 
    }

下面的功能是通過上面的函數 GetCpu 獲得此進程的 CPU 利用率,然后通過條件語句判斷 CPU 利用率是否超過限制,如果超過 80%(可以根據實際情況進行調整),則輸出告警,否則輸出正常信息。

 

清單 3. 判斷 CPU 利用率是否超過限制

 

復制代碼代碼如下:

 function CheckCpu 
 { 
    PID=$1 
    cpu=`GetCpu $PID` 
    if [ $cpu -gt 80 ] 
    then 
    { 
 echo “The usage of cpu is larger than 80%”
    } 
    else 
    { 
 echo “The usage of cpu is normal”
    } 
    fi 
 }
 

 

 示例演示:

1)源程序(假設上面已經查詢出 CFTestApp 的進程 ID 為 11426)

復制代碼代碼如下:

 CheckCpu 11426

2)結果輸出
復制代碼代碼如下:

    The usage of cpu is 75 
    The usage of cpu is normal 
    [dyu@xilinuxbldsrv shell]$

3)結果分析

 

從上面的輸出可見:CFTestApp 程序當前的 CPU 使用為 75%,是正常的,沒有超過 80% 的告警限制。

檢測進程內存使用量

在對應用服務進行維護時,也經常遇到由于內存使用過大導致進程崩潰,造成業務中斷的情況(例如 32 位程序可尋址的最大內存空間為 4G,如果超出將申請內存失敗,同時物理內存也是有限的)。內存使用過高可能由于內存泄露,消息堆積等情況,通過腳本對業務進程內存使用量進行時時監控,可以在內存使用量異常時及時發送告警(例如通過短信),便于維護人員及時處理。下面的函數可獲得指定進程 ID 的進程內存使用情況。它有一個參數為進程 ID,它首先使用 ps 查找進程信息,同時通過 grep -v 過濾掉 VSZ 行 , 然后通過除 1000 取以兆為單位的內存使用量。

清單 4. 對業務進程內存使用量進行監控

 

復制代碼代碼如下:

    function GetMem 
    { 
        MEMUsage=`ps -o vsz -p $1|grep -v VSZ` 
        (( MEMUsage /= 1000)) 
        echo $MEMUsage 
    }

下面的功能是通過上面的函數 GetMem獲得此進程的內存使用,然后通過條件語句判斷內存使用是否超過限制,如果超過 1.6G(可以根據實際情況進行調整),則輸出告警,否則輸出正常信息。

 

清單 5. 判斷內存使用是否超過限制

復制代碼代碼如下:

mem=`GetMem $PID`                
 if [ $mem -gt 1600 ] 
 then 
 { 
     echo “The usage of memory is larger than 1.6G”
 } 
 else 
 { 
    echo “The usage of memory is normal”
 } 
 fi

 

示例演示:

1)源程序(假設上面已經查詢出 CFTestApp 的進程 ID 為 11426)

復制代碼代碼如下:

mem=`GetMem 11426` 
 
    echo "The usage of memory is $mem M"
 
    if [ $mem -gt 1600 ] 
    then 
    { 
         echo "The usage of memory is larger than 1.6G"
    } 
    else 
    { 
        echo "The usage of memory is normal"
    } 
    fi

 

2)結果輸出

 

復制代碼代碼如下:

    The usage of memory is 248 M 
    The usage of memory is normal 
    [dyu@xilinuxbldsrv shell]$

 

3)結果分析

從上面的輸出可見:CFTestApp 程序當前的內存使用為 248M,是正常的,沒有超過 1.6G 的告警限制。

檢測進程句柄使用量

在對應用服務進行維護時,也經常遇到由于句柄使用 過量導致業務中斷的情況。每個平臺對進程的句柄使用都是有限的,例如在 Linux 平臺,我們可以使用 ulimit – n 命令(open files (-n) 1024)或者對 /etc/security/limits.conf 的內容進行查看,得到進程句柄限制。句柄使用過高可能由于負載過高,句柄泄露等情況,通過腳本對業務進程句柄使用量進行時時監控,可以在異常時及時發送告警(例如通過短信),便于維護人員及時處理。下面的函數可獲得指定進程 ID 的進程句柄使用情況。它有一個參數為進程 ID,它首先使用 ls 輸出進程句柄信息,然后通過 wc -l 統計輸出句柄個數。

 

復制代碼代碼如下:

    function GetDes 
    { 
        DES=`ls /proc/$1/fd | wc -l` 
        echo $DES 
    }

 

下面功能是通過上面的函數 GetDes獲得此進程的句柄使用量,然后通過條件語句判斷句柄使用是否超過限制,如果超過 900(可以根據實際情況進行調整)個,則輸出告警,否則輸出正常信息。

復制代碼代碼如下:

 des=` GetDes $PID` 
 if [ $des -gt 900 ] 
 then 
 { 
     echo “The number of des is larger than 900”
 } 
 else 
 { 
    echo “The number of des is normal”
 } 
 fi

 

示例演示:

1)源程序(假設上面查詢出 CFTestApp 的進程 ID 為 11426)

復制代碼代碼如下:

des=`GetDes 11426` 
 
    echo "The number of des is $des"
 
    if [ $des -gt 900 ] 
    then 
    { 
         echo "The number of des is larger than 900"
    } 
    else 
    { 
        echo "The number of des is normal"
    } 
    fi

 

2)結果輸出

 

復制代碼代碼如下:

    The number of des is 528 
    The number of des is normal 
    [dyu@xilinuxbldsrv shell]$

3)結果分析

 

從上面的輸出可見:CFTestApp 程序當前的句柄使用為 528 個,是正常的,沒有超過 900 個的告警限制。

4)命令介紹

wc: 統計指定文件中的字節數、字數、行數 , 并將統計結果顯示輸出。 參數:-l 統計行數。 -c 統計字節數。 -w 統計字數。

查看某個 TCP 或 UDP 端口是否在監聽

端口檢測是系統資源檢測經常遇到的,特別是在網絡通訊情況下,端口狀態的檢測往往是很重要的。有時可能進程,CPU,內存等處于正常狀態,但是端口處于異常狀態,業務也是沒有正常運行。下面函數可判斷指定端口是否在監聽。它有一個參數為待檢測端口,它首先使用 netstat 輸出端口占用信息,然后通過 grep, awk,wc 過濾輸出監聽 TCP 端口的個數,第二條語句為輸出 UDP 端口的監聽個數,如果 TCP 與 UDP 端口監聽都為 0,返回 0,否則返回 1.

清單 6. 端口檢測

 

復制代碼代碼如下:

 function Listening 
 { 
    TCPListeningnum=`netstat -an | grep ":$1 " | /n
    awk '$1 == "tcp" && $NF == "LISTEN" {print $0}' | wc -l` 
    UDPListeningnum=`netstat -an|grep ":$1 " /n
    |awk '$1 == "udp" && $NF == "0.0.0.0:*" {print $0}' | wc -l` 
    (( Listeningnum = TCPListeningnum + UDPListeningnum )) 
    if [ $Listeningnum == 0 ] 
    then 
    { 
        echo "0"
    } 
    else 
    { 
       echo "1"
    } 
    fi 
 }

示例演示:

 

1)源程序(例如查詢 8080 端口的狀態是否在監聽)

 

復制代碼代碼如下:

    isListen=`Listening 8080` 
    if [ $isListen -eq 1 ] 
    then 
    { 
        echo "The port is listening"
    } 
    else 
    { 
        echo "The port is not listening"
    } 
    fi
 

2)結果輸出

 

 

復制代碼代碼如下:

    The port is listening 
    [dyu@xilinuxbldsrv shell]$

3)結果分析

 

從上面的輸出可見:這個 Linux 服務器的 8080 端口處在監聽狀態。

4)命令介紹

netstat: 用于顯示與 IP、TCP、UDP 和 ICMP 協議相關的統計數據,一般用于檢驗本機各端口的網絡連接情況。 參數:-a 顯示所有連線中的 Socket。 -n 直接使用 IP 地址,而不通過域名服務器。
下面的功能也是檢測某個 TCP 或者 UDP 端口是否處在正常狀態。

 

復制代碼代碼如下:

 tcp: netstat -an|egrep $1 |awk '$6 == "LISTEN" && $1 == "tcp" {print $0}'
 udp: netstat -an|egrep $1 |awk '$1 == "udp" && $5 == "0.0.0.0:*" {print $0}'
 

命令介紹

 

egrep: 在文件內查找指定的字符串。egrep 執行效果如 grep -E,使用的語法及參數可參照 grep 指令,與 grep 不同點在于解讀字符串的方法,egrep 是用擴展的正則表達式語法來解讀,而 grep 則用基本的正則表達式語法,擴展的正則表達式比基本的正則表達式有更完整的表達規范。

查看某個進程名正在運行的個數

有時我們可能需要得到服務器上某個進程的啟動個數,下面的功能是檢測某個進程正在運行的個數,例如進程名為 CFTestApp。

復制代碼代碼如下:

 Runnum=`ps -ef | grep -v vi | grep -v tail | grep "[ /]CFTestApp" | grep -v grep | wc -l
 

 

檢測系統 CPU 負載

在對服務器進行維護時,有時也遇到由于系統 CPU(利用率)負載 過量導致業務中斷的情況。服務器上可能運行多個進程,查看單個進程的 CPU 都是正常的,但是整個系統的 CPU 負載可能是異常的。通過腳本對系統 CPU 負載進行時時監控,可以在異常時及時發送告警,便于維護人員及時處理,預防事故發生。下面的函數可以檢測系統 CPU 使用情況 . 使用 vmstat 取 5 次系統 CPU 的 idle 值,取平均值,然后通過與 100 取差得到當前 CPU 的實際占用值。

 

復制代碼代碼如下:

 function GetSysCPU 
 { 
   CpuIdle=`vmstat 1 5 |sed -n '3,$p' /n
   |awk '{x = x + $15} END {print x/5}' |awk -F. '{print $1}'
   CpuNum=`echo "100-$CpuIdle" | bc` 
   echo $CpuNum 
 }

 

示例演示:

1)源程序

 

復制代碼代碼如下:

 cpu=`GetSysCPU` 
 
 echo "The system CPU is $cpu"
 
 if [ $cpu -gt 90 ] 
 then 
 { 
    echo "The usage of system cpu is larger than 90%"
 } 
 else 
 { 
    echo "The usage of system cpu is normal"
 } 
 fi

 

2)結果輸出

復制代碼代碼如下:

 The system CPU is 87 
 The usage of system cpu is normal 
 [dyu@xilinuxbldsrv shell]$

 

3)結果分析

從上面的輸出可見:當前 Linux 服務器系統 CPU 利用率為 87%,是正常的,沒有超過 90% 的告警限制。

4)命令介紹

vmstat:Virtual Meomory Statistics(虛擬內存統計)的縮寫,可對操作系統的虛擬內存、進程、CPU 活動進行監視。
參數: -n 表示在周期性循環輸出時,輸出的頭部信息僅顯示一次。

檢測系統磁盤空間

系統磁盤空間檢測是系統資源檢測的重要部分,在系統維護維護中,我們經常需要查看服務器磁盤空間使用情況。因為有些業務要時時寫話單,日志,或者臨時文件等,如果磁盤空間用盡,也可能會導致業務中斷,下面的函數可以檢測當前系統磁盤空間中某個目錄的磁盤空間使用情況 . 輸入參數為需要檢測的目錄名,使用 df 輸出系統磁盤空間使用信息,然后通過 grep 和 awk 過濾得到某個目錄的磁盤空間使用百分比。

 

復制代碼代碼如下:

 function GetDiskSpc 
 { 
    if [ $# -ne 1 ] 
    then 
        return 1 
    fi 
 
    Folder="$1$"
    DiskSpace=`df -k |grep $Folder |awk '{print $5}' |awk -F% '{print $1}'
    echo $DiskSpace 
 }

 

示例演示:

1)源程序(檢測目錄為 /boot)

 

復制代碼代碼如下:

 Folder="/boot"
 
 DiskSpace=`GetDiskSpc $Folder` 
 
 echo "The system $Folder disk space is $DiskSpace%"
 
 if [ $DiskSpace -gt 90 ] 
 then 
 { 
    echo "The usage of system disk($Folder) is larger than 90%"
 } 
 else 
 { 
    echo "The usage of system disk($Folder)  is normal"
 } 
 fi

 

2)結果輸出

 

復制代碼代碼如下:

 The system /boot disk space is 14% 
 The usage of system disk(/boot)  is normal 
 [dyu@xilinuxbldsrv shell]$

3)結果分析

 

從上面的輸出可見:當前此 Linux 服務器系統上 /boot 目錄的磁盤空間已經使用了 14%,是正常的,沒有超過使用 90% 的告警限制。

4)命令介紹

df:檢查文件系統的磁盤空間占用情況??梢岳迷撁顏慝@取硬盤被占用了多少空間,目前還剩下多少空間等信息。 參數:-k 以 k 字節為單位顯示。

總結

在 Linux 平臺下,shell 腳本監控是一個非常簡單,方便,有效的對服務器,進程進行監控的方法,對系統開發以及進程維護人員非常有幫助。它不僅可以對上面的信息進行監控,發送告警,同時也可以監控進程的日志等等的信息,希望本文對大家有幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品综合久久中文字幕| 欧美日韩在线第一页| 中文字幕日韩精品在线| 日韩av电影免费观看高清| 91色视频在线导航| 亲子乱一区二区三区电影| 国产精品成人v| 日韩在线视频免费观看| 欧美激情性做爰免费视频| 亚洲精品91美女久久久久久久| 亚洲黄在线观看| 国产精品海角社区在线观看| 久久久久久久亚洲精品| 亚洲三级黄色在线观看| 亚洲香蕉在线观看| 国产日韩中文字幕| 欧美精品久久久久a| 91av成人在线| 亚洲国产精品久久久久秋霞蜜臀| xxx成人少妇69| 亚洲国产成人av在线| 日韩av一卡二卡| 久久亚洲一区二区三区四区五区高| 亚洲国产中文字幕久久网| 97视频在线观看免费| 一区二区三区亚洲| 最新亚洲国产精品| 久久99久久99精品免观看粉嫩| 性欧美长视频免费观看不卡| 欧美高清videos高潮hd| 国模精品一区二区三区色天香| 日韩国产高清污视频在线观看| 亚洲成av人片在线观看香蕉| 91chinesevideo永久地址| 久久精品中文字幕免费mv| 亚洲欧美综合另类中字| 97激碰免费视频| 97国产一区二区精品久久呦| 色偷偷av一区二区三区乱| 欧美精品一区二区免费| xvideos亚洲人网站| 亚洲欧美激情在线视频| 日韩在线播放视频| 成人免费在线视频网址| 亚洲女成人图区| 日韩av不卡在线| 国产精品久久久久久婷婷天堂| 欧美猛交ⅹxxx乱大交视频| 成人免费网站在线| 永久免费毛片在线播放不卡| 欧美一级视频一区二区| 久久久国产精彩视频美女艺术照福利| 日韩经典中文字幕在线观看| 欧美精品一区在线播放| 91av在线不卡| 久久精品视频va| 98视频在线噜噜噜国产| 97国产suv精品一区二区62| 国产午夜精品理论片a级探花| 国产精品91在线观看| 国产日本欧美在线观看| 亚洲人成在线一二| 中文字幕亚洲欧美在线| 日韩欧美精品网址| 欧美激情精品久久久| 亚洲自拍偷拍色图| 欧美人在线观看| 亚洲精品电影网站| 欧美精品激情在线观看| 91精品国产综合久久男男| 成人有码在线播放| 激情久久av一区av二区av三区| 大桥未久av一区二区三区| 亚洲男人av电影| 91亚洲午夜在线| 欧美激情乱人伦| 欧美日韩国产在线播放| www.日韩.com| 久久99久久99精品免观看粉嫩| 久久躁狠狠躁夜夜爽| 夜夜嗨av一区二区三区免费区| 日韩精品视频在线观看免费| 亚洲第一av网站| 精品国产一区二区三区久久久| 午夜精品理论片| 国产丝袜一区二区三区| 国产精品成人aaaaa网站| 亚洲品质视频自拍网| 青青a在线精品免费观看| 国产精品一区二区三| 成人黄色中文字幕| 国产欧美日韩免费| xxx一区二区| 欧美第一淫aaasss性| 2021国产精品视频| 亚洲国产成人精品电影| 久久影视电视剧凤归四时歌| 欧美在线亚洲一区| 亚洲成av人影院在线观看| 亚洲成人国产精品| 日韩影视在线观看| 日韩大胆人体377p| 在线电影av不卡网址| 97人人模人人爽人人喊中文字| 国产精品稀缺呦系列在线| 亚洲国产精品va在线| 98精品国产高清在线xxxx天堂| 久久夜色精品亚洲噜噜国产mv| 538国产精品视频一区二区| 亚洲xxxx在线| 1769国内精品视频在线播放| 亚洲欧洲日本专区| 亚洲天堂av电影| 亚洲成人久久电影| 亚洲天堂日韩电影| 国产+成+人+亚洲欧洲| 国产v综合v亚洲欧美久久| 国产日韩欧美在线视频观看| 日本亚洲欧洲色α| 中文字幕综合在线| 国产精品一区二区久久久| 国产精品免费一区豆花| 成人黄色中文字幕| 亚洲精品国产品国语在线| 69视频在线播放| 欧美另类99xxxxx| 亚洲bt天天射| 亚洲成人激情在线观看| 国产精品福利无圣光在线一区| www.亚洲男人天堂| 国产丝袜一区二区三区免费视频| 欧美高清一级大片| 成人h视频在线观看播放| 国产女人18毛片水18精品| 欧美一级视频一区二区| 国产亚洲精品美女久久久久| 色999日韩欧美国产| 欧美与欧洲交xxxx免费观看| 久热精品视频在线免费观看| 久久久久这里只有精品| 国产精品一区二区三区久久| 97精品国产91久久久久久| 日本一欧美一欧美一亚洲视频| 亚洲影视中文字幕| 26uuu另类亚洲欧美日本一| 国产精品一区二区电影| 91av视频导航| 欧美日韩999| 亚洲一区二区久久久| 亲子乱一区二区三区电影| 亚洲a∨日韩av高清在线观看| 精品国偷自产在线视频| 国产美女久久精品香蕉69| 久久久成人精品视频| 欧美日韩亚洲一区二区三区| 国产精品入口免费视频一| 久久久999精品视频| 国产成人精品在线播放| 日本精品久久久久久久| 精品国产精品三级精品av网址| 久久亚洲国产精品成人av秋霞| 中文字幕亚洲一区在线观看| 98视频在线噜噜噜国产| 影音先锋欧美精品|