1. 程式人生 > >六、程序管理詳細記錄

六、程序管理詳細記錄

什麼是程序?

  “正在執行的程式或命令”就是程序;每一個程序的執行,都會耗費一定的系統資源。有的程序執行的很快,如 “ls”命令程序,會產生一個程序,回車的瞬間命令就已經由開始到結束了。有的程序會持續佔用系統資源,如你的QQ,網頁等。

程序管理的作用:判斷伺服器健康狀態、檢視系統中所有程序、殺死程序

程序的檢視

  • ps            ##靜態檢視程序資訊
          -A      ## 顯示所有程序,與-e相同
          -a      ## 不與terminal會話引線有關的所有程序
          -u      ## 顯示程序的歸屬使用者及記憶體使用情況
           x      ## 通常與a一起使用,可列出較完整的資訊
          -l       ## 長格式顯示
          aux      ## 檢視所有程序,使用BSD作業系統格式
          -le        ##檢視所有程序,使用Linux標準命令格式

  ps ax -o %cpu,%mem,user,group,comm,nice,pid,stat      ## 指定顯示程序的某些資訊
  ps ax -o %cpu,comm --sort <+|-%cpu > <+|-%mem>       ## 按照程序資訊排序
   +  ##正序    -  ##倒序
  
  ps命令的輸出

  在這裡插入圖片描述
  USER:程序是哪個使用者產生
  PID:程序的ID號
  %CPU:程序佔用CPU資源的百分比,佔用越高,程序越耗費資源
  %MEM:程序佔用實體記憶體的百分比,佔用越高,程序越耗費資源
  VSZ:程序佔用虛擬記憶體的大小,單位KB
  RSS:程序佔用實際實體記憶體的大小,單位KB
  TTY:程序在哪個終端執行,tty1-tty6是本地字元介面終端,tty7是本地圖形終端。pts/0-255代表虛擬終端
  STAT:程序狀態:R(執行),S(睡眠),T(停止),s(包含子程序),+(位於後臺),Z(僵死),<(優先順序高),N(優先順序高)
  START:程序的啟動時間
  TIME:該程序佔用CPU的運算時間,注意不是系統時間
  COMMAND:產生此程序的命令名
  注意

:1. /sbin/init 系統的第一個程序,PID永遠是1,是所有程序的父程序
     2.TTY列絕大多數是“?”,說明這些程序是由系統核心啟動的(系統程序)

  

  • pstree            ## 檢視程序樹
          -p        ## 顯示程序的PID
          -u        ## 顯示程序的所屬使用者
    在這裡插入圖片描述
  • top               ## 動態監控程序,檢視程序資訊
          s          ## 修改程序重新整理間隔時間
          m         ## 根據記憶體佔有率進行排序
          c          ## 根據cpu佔有率進行排序
          u          ## 後面輸入使用者名稱,查詢該使用者發起的所有程序
          k          ## 後面跟要工作的程序pid,和發起的訊號(eg:9,15,20)
          h          ## 退出程序檢視介面
          q          ## 顯示top命令的幫助

  top介面上面的5行檢視系統的健康狀況
  在這裡插入圖片描述
  第一行為任務佇列資訊
  系統執行時間:時間越長,表示伺服器執行的時間越長,但並不好,應該定時重啟伺服器,讓狀態歸0,降低故障率
  平均負載:通常認為小於1,但並不準確
  在這裡插入圖片描述
  第二行為程序資訊
  在這裡插入圖片描述
  第三行為CPU資訊
  %id空閒程序一般不低於20%
  在這裡插入圖片描述
  第四行為實體記憶體資訊
  在這裡插入圖片描述
  第五行為交換分割槽資訊
  緩衝:加速資料寫入;快取:加速資料讀取

程序管理

  • 環境中程序的前後臺呼叫
    jobs            ##檢視被打入環境後臺的程序
    ctrl+z            ##把佔用終端的程序打入後臺
    fg jobsnum          ##把後臺程序調回前臺
    bg jobsnum          ##把後臺暫停的程序執行
    comm &            ##讓命令直接在後臺執行
    在這裡插入圖片描述
  • 終止程序
    kill   -訊號   程序pid        ##根據PID終止某個程序
    killall   -訊號   程序名       ##依據程序名終止多個程序
    pkill   -u student   -訊號        ##終止某使用者產生的程序
    pkill   -訊號 -t    程序名        ##終止某終端登入的程序
    在這裡插入圖片描述
  • 程序訊號
    常用訊號等級
    1             ##程序重新載入配置
    2             ##刪除程序在記憶體中的資料
    3             ##刪除滑鼠在記憶體中的資料
    9             ##強行結束單個程序(不能被阻塞)
    15             ##正常關閉程序 (可能會被阻塞)
    18             ##執行暫停的程序
    19             ##暫停某個程序 (不能被阻塞)
    20             ##把程序打入後臺 (可以被阻塞)
    man 7 signal         ##檢視訊號詳細資訊
  • 使用者登入審計
    w              ##檢視使用系統的當前使用者有那些
    w -f             ##-f檢視使用地點
    last             ##檢視使用者登陸成功歷史
    lastb            ##檢視使用者登陸未成功歷史
    在這裡插入圖片描述

程序優先順序

  1.程序的優先順序範圍
  -20~19

  2.優先順序檢視
  ps ax -o pid,nice,comm

  3.指定某個優先順序開啟程序
  nice -n 優先順序數字 程序名稱
  nice -n -5 vim & ##開啟vim並且指定程式優先順序為-5

  4.改變程序優先順序
  reince -n 優先順序數字 程序pid
  renice -n -5 1806 ##改變1806程序的優先順序為-5
  [email protected] ~]# ps a -o pid,nice,comm
   PID NI COMMAND
   614 0 Xorg
   1128 0 agetty
   1625 0 bash
   1785 0 vim
   1806 -5 vim
   1824 -5 vim
   1835 0 ps