1. 程式人生 > 其它 >【linux系統】命令學習(八)bash 程式設計實戰學習

【linux系統】命令學習(八)bash 程式設計實戰學習

常見shell : bash  sh  zsh

windows: git bash cygwin

MAC : terminal iterm

netstat

  是linux下用於顯示網路狀態的命令。通過它能統計埠情況,網路連線狀態,路由表等資訊。在網路開發或運維中,經常會使用netstat來檢視網路狀態。

  常用引數說明:

    -l或–listening 顯示監控中的伺服器的Socket。
    -n或–numeric 直接使用IP地址,而不通過域名伺服器。
    -p或–programs 顯示正在使用Socket的程式識別碼和程式名稱。
    -t或–tcp 顯示TCP傳輸協議的連線狀況。
  日常用法:

    netstat -tnlp
    netstat -tnp
  原文連結:https://blog.csdn.net/weixin_43627624/article/details/107133778

範例:

  netstat -tnp | grep ":22" | awk '{print $5}' | awk -F: '{print $1}' | uniq -c | sort -nr |wc -l

  檢視當前網路連線狀態,查詢關於:22的網路連線,取第五列資料,在第五列資料中以:為分隔符取第一列,去重並統計數量,按數字排序並倒序排序,統一共有多少行。

  head -3 jmeter.log

  檢視前三行

  more jmeter.log

  less jmeter.log -----less 更好用,查詢,上下鍵可以瀏覽資料

  

  diff 1 2 比較1 和 2 的區別

  cat 120601.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 3

  less 120601.log | awk '{print $7}'| awk -F? '{print $1}' | grep "/topics/[0-9]*/"

  less 120601.log | awk '{print $7}'| awk -F? '{print $1}' | grep "/topics/[0-9][0-9]5"

  less 120601.log | grep topics | grep -E "/topics/[0-9]{1,10}[?]{1}" | sed -E 's#[0-9]{1,10}#:int:#g' | awk '{print $7}' | sort | uniq -c

  grep topics 120601.log | awk '{print $7}' | sed 's#?.*##g'

  grep topics 120601.log | awk '{print $7}' | sed 's#?.*##g' | sed 's#/topics/[0-9]*$#/topics/topics#' | sort | uniq -c | sort -nr |head -5

  grep topics 120601.log | awk '{print $7}' | sed 's#?.*##g' | sed 's#/topics/[0-9]*$#/topics/topics#' | sed 's#/topics/[0-9]*/replies/[0-9]*/.*#topics/replies#' | sort | uniq -c | sort -nr |head -5

  grep topics 120601.log | grep -v "topoooo" 過濾掉topoooo的資訊

http常見協議

  200 30x 400 404 500 503

ps:檢視 Linux 中當前執行的程序的命令

  man ps

  ps -ef 斜槓分隔 標準格式輸出 ps -e 列印所有程序

    UID //使用者ID、但輸出的是使用者名稱
    PID //程序的ID
    PPID //父程序ID
    C //程序佔用CPU的百分比
    STIME //程序啟動到現在的時間
    TTY //該程序在那個終端上執行,若與終端無關,則顯示? 若為pts/0等,則表示由網路連線主機程序。
    CMD //命令的名稱和引數  

    

  ps -eo 獲取少數字段,可以進行分析

  ps -o pid 只打印有用的資料

  ps aux用BSD的格式來顯示

    USER //使用者名稱
    %CPU //程序佔用的CPU百分比
    %MEM //佔用記憶體的百分比
    VSZ //該程序使用的虛擬記憶體量(KB)
    RSS //該程序佔用的固定記憶體量(KB)(駐留中頁的數量)
    STAT //程序的狀態

      D //無法中斷的休眠狀態(通常 IO 的程序);
      R //正在執行可中在佇列中可過行的;
      S //處於休眠狀態;
      T //停止或被追蹤;
      W //進入記憶體交換 (從核心2.6開始無效);
      X //死掉的程序 (基本很少見);
      Z //殭屍程序;
      < //優先順序高的程序
      N //優先順序較低的程序
      L //有些頁被鎖進記憶體;
      s //程序的領導者(在它之下有子程序);
      l //多執行緒,克隆執行緒(使用 CLONE_THREAD, 類似 NPTL pthreads);
      + //位於後臺的程序組;
    START //該程序被觸發啟動時間
    TIME //該程序實際使用CPU執行的時間

  

  for i in {1..8};do sleep 1 ; ps -o %cpu -p pid; done -------ps -o %cpu -p pid迴圈八次

  for i in {1..8};do sleep 1 ; ps -o %cpu,%mem -p pid; done -------ps -o %cpu -p pid迴圈八次

kill -9 pid 關閉程序

top

  經常用來監控linux的系統狀況,是常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用情況。

  -d:number代表秒數,表示top命令顯示的頁面更新一次的間隔。預設是5秒。

   -b:以批次的方式執行top。

  -n:與-b配合使用,表示需要進行幾次top命令的輸出結果。

  -p:指定特定的pid程序號進行觀察。

  ?:顯示在top當中可以輸入的命令

  P:以CPU的使用資源排序顯示

  M:以記憶體的使用資源排序顯示

  N:以pid排序顯示

  T:由程序使用的時間累計排序顯示

  k:給某一個pid一個訊號。可以用來殺死程序

  r:給某個pid重新定製一個nice值(即優先順序)

  q:退出top(用ctrl+c也可以退出top)。

  top -b -p 1132 -n 2 -d 1 | grep --line-buffered 1132 | awk 'BEGIN{print "CPU MEM"}{print $9,$10;c+=$9;m+$10}END{print "-------";print c/NR,M/NR}'

  

  top -b -p 1132 -n 2 -d 1 | grep --line-buffered 1132 | awk 'BEGIN{print "CPU MEM avgc avgs"}{c+=$9;m+=$10}{print $9,$10,c/NR,m/NR}'

  

  jobs -l 檢視當前執行程序

  kill pid 殺掉命令