天天看點

Linux之netstat指令-服務自動化釋出時以此結果為依據停止服務

Linux之netstat指令-服務自動化釋出時以此結果為依據停止服務

  1. 需求:

    在停止Linux上一個程序之前,需要該程序無用戶端連接配接,才能停止該服務

    比如:

    kill -15 pid

    ,不過這個指令還是不保險

    最終還是選擇用linux的netstat指令來實作該功能

  2. netstat指令介紹:

    文法:

    netstat [-acCeFghilMnNoprstuvVwx][-A<網絡類型>][--ip]

    參數說明:
    -a或--all 顯示所有連線中的Socket。
     -A<網絡類型>或--<網絡類型> 列出該網絡類型連線中的相關位址。
     -c或--continuous 持續列出網絡狀态。
     -C或--cache 顯示路由器配置的快取資訊。
     -e或--extend 顯示網絡其他相關資訊。
     -F或--fib 顯示FIB。
     -g或--groups 顯示多重廣播功能群組組員名單。
     -h或--help 線上幫助。
     -i或--interfaces 顯示網絡界面資訊表單。
     -l或--listening 顯示監控中的伺服器的Socket。
     -M或--masquerade 顯示僞裝的網絡連線。
     -n或--numeric 直接使用IP位址,而不通過域名伺服器。
     -N或--netlink或--symbolic 顯示網絡硬體外圍裝置的符号連接配接名稱。
     -o或--timers 顯示計時器。
     -p或--programs 顯示正在使用Socket的程式識别碼和程式名稱。
     -r或--route 顯示Routing Table。
     -s或--statistice 顯示網絡工作資訊統計表。
     -t或--tcp 顯示TCP傳輸協定的連線狀況。
     -u或--udp 顯示UDP傳輸協定的連線狀況。
     -v或--verbose 顯示指令執行過程。
     -V或--version 顯示版本資訊。
     -w或--raw 顯示RAW傳輸協定的連線狀況。
     -x或--unix 此參數的效果和指定"-A unix"參數相同。
     --ip或--inet 此參數的效果和指定"-A inet"參數相同。
               

    參考菜鳥教程

    在此處我們用到的指令:

    netstat -an | grep PORT

    如下圖所示,顯示所有的socket連接配接以及連接配接的用戶端資訊:
    Linux之netstat指令-服務自動化釋出時以此結果為依據停止服務
    沒有連接配接的情況:
    Linux之netstat指令-服務自動化釋出時以此結果為依據停止服務
  3. 我們利用這個指令 結合 wc(root) 和 awk指令 擷取到目前端口的用戶端連接配接數,指令如下:

    netstat -an | grep 7778 |wc | awk '{print $1}'

    無用戶端連接配接情況:
    Linux之netstat指令-服務自動化釋出時以此結果為依據停止服務
    有用戶端連接配接情況:
    Linux之netstat指令-服務自動化釋出時以此結果為依據停止服務
    借此我們可以拿到這個用戶端連接配接數,來做服務自動化釋出時的是否可以停止服務的條件

github

繼續閱讀