1. 程式人生 > >Linux進程/進程管理工具

Linux進程/進程管理工具

Linux 進程管理 top htop glances

  • Linux進程概念

  • Linux下進程的管理(進程管理命令以及一些工具)


  • 1. Linux進程的概念

    進程是操作系統的概念,每當我們執行一個程序時,對於操作系統來講就創建了一個進程,在這個過程中,伴隨著資源的分配和釋放。可以認為進程是一個程序的一次執行過程。

    通俗點講,想象一臺獨立的電腦,裏面有很多用戶自行安裝的程序,用戶打開應用程序,這個操作就是把程序調到內存中執行,在內存中執行的這個“程序”就是進程,無論實在Linux中還是Windows中,產生進程的同時都會生成一個ID稱之為PID,也就是進程號。進程從發起到最後結束中間的過程中可能處於多種狀態,如下:

    運行狀態

    :running 進程正在運行中

    就緒狀態:ready 進程準備運行

    睡眠狀態:sleeping 處於休眠狀態(分為可中斷睡眠不可中斷睡眠:通常指被I/O阻塞的進程,等待I/O滿足之前無法繼續運行

    僵死狀態:zombie 找不到歸宿的進程,父進程不來管理或者父進程已經死掉

    停止狀態:stopped 不可被調度運行

    2. Linux下進程的管理

    進程分為守護進程前臺進程守護進程即為系統引導過程中啟動的進程,與終端無關前臺進程跟終端相關,通過終端啟動的進程,當然,也可以把在前臺運行的進程送往後臺,以守護模式運行

    ,進程還可以根據占用資源的多少來分為CPU密集型I/O密集型,CPU密集型是對CPU占用率較高的進程,。I/O密集型是等待I/O時間長的進程

    進程管理命令:ps/stat/top/htop/glances

    2.1 ps :顯示系統當前進程的運行狀況

    ps命令下面的選項集成了UNIX,GNU,BSD三種風格的選項,常用的有-ef/aux/axo

    ps -ef:

    技術分享圖片

    UID/PID/PPID:該進程的發起者/進程號/父進程號

    C: CPU的使用率,百分比

    STIME:進程的啟動時間,即什麽時間啟動的進程

    TTY:登陸者的終端位置,遠程登錄則提示pts/n。本地登錄顯示ttyn, ?表示系統進程

    TIME: 進程實際花費CPU運行時間,不是系統時間

    CMD: command縮寫,觸發此進程的命令

    ps aux:

    技術分享圖片

    USER: 進程的發起者

    PID: 進程號

    %CPU:進程耗費CPU資源的百分比

    %MEM:進程所占用物理內存的百分比

    VSZ: 進程用掉的虛擬內存大小,單位KB

    RSS: 進程占用的固定內存大小,單位KB

    TTY: 進程在哪個終端運行

    STAT:進程目前的狀態(狀態有好多種,如下

    R:running 運行狀態

    S:interruptible sleeping 可中斷睡眠

    D:uninterruptible sleeping 不可中斷睡眠

    T:stopped 停止運行

    Z:zombie 僵屍進程

    s:session leader

    +:前臺進程,占據終端的進程

    l:多線程進程

    <:高優先級進程

    N:低優先級進程

    TIME:進程實際使用CPU的時間

    COMMAND:觸發進程的命令

    ps axo :自定義顯示進程信息

    常用的自定義選項:pid/command/psr/pri/ni

    psr: 當前進程運行的CPU編號

    pri: 當前進程的優先級

    ni: 當前進程的nice值

    技術分享圖片

    自定義選項可以只用一個,若同時用多個時用 "," 隔開即可

    很多時候直接顯示出來的信息,並不是我們想要找的,所以就需要過濾一下信息內容

    pgrep: 搜索進程

    -U : 僅顯示以指定用戶身份運行的進程

    -G :僅顯示以指定用戶組身份運行的進程

    -l :顯示PID和進程名

    pidof : 顯示指定命令所啟動的進程ID

    例:pidof vim

    技術分享圖片


    以上的一些查看進程相關信息的命令都是靜態的,當然,很多時候需要實時監控來獲取信息,所以也需要一些可以實現動態監測的工具

    2.2 top : 相對ps 而言,ps僅是顯示靜態、執行時間點的進程狀態信息,top可以實現動態獲取進程信息

    技術分享圖片

    信息量有點繁瑣,不過很有條理

    第一行:系統時間(09:34:00)、系統啟動到此時此刻鎖經過的時間(22:15)、當前系統已經登錄的用戶數量 3 users、系統在1,5,15分鐘的平均負載,數值越小表示系統剩余資源越多越空閑,如果這個值高於1,就需要註意當前系統負載可能過高

    第二行:顯示的是目前進程的總量與個別程序在什麽狀態,圖示為1個正在運行、143個出於睡眠狀態、0個停止狀態的進程、0個僵死狀態(如果有僵死狀態的程序則需要查看是哪個進程)

    第三行:顯示CPU的整體負載,如果是多核心CPU,可以按下數字1來切換不同CPU的負載狀況

    技術分享圖片

    us: user space用戶運行程序占用CPU的百分比

    sy: system(kernel space) 用於運行內核占用CPU的百分比

    ni: nice 用戶進程空間所改變過優先級的進程占用CPU的百分比

    di: idle空閑CPU百分比

    wa: wait io 等待I/O所花費的時間

    hi: hardware interrupt硬件中斷占用CPU的百分比

    si:software interrupt軟件中斷占用CPU的百分比

    st:stolen 被虛擬機“偷走”的百分比

    第四行:表示物理內存的使用狀況

    第五行:表示交換分區的狀況

    第六行:默認空行,做輸入命令用途

    top內建命令集:P:以占據CPU大小排序//M:以占據Memory空間大小排序//T:CPU累計占用時間的排序//l:顯示系統是否負載運行//t:是否顯示進程摘要信息以及CPU負載狀態//數字1:平均或者單獨顯示CPU的負載狀態//m:是否顯示內存相關的狀態信息//q: 退出//s:修改延遲時長//k:終止指定進程

    2.3 htop :top 命令的增強版,默認未安裝,需要epel源安裝

    技術分享圖片

    大體上看起來跟top差不多,不過顏色至少是很好看了

    htop界面所支持的交互式命令

    u:選擇顯示指定用戶的進程

    l:顯示光標所在進程所打開的文件列表

    s:顯示光標所在進程執行的系統調用

    a:綁定進程到指定的CPU

    #:快速定位光標至PID為#的進程上

    t:顯示樹狀結構(進程之間的關系樹狀圖)

    2.4 glances : 可以在終端上實時顯示重要的系統信息,並動態的對其更新,這個工具可以作用於任何終端屏幕,並且不會消耗大量的CPU資源,通常低於2%。此外glances工具可以將數據捕獲生成一個文件,便於日後分析或繪制圖形,輸出文件可以是電子表格的形式或者html格式

    默認是沒有安裝的,可以用epel源安裝

    技術分享圖片

    glances工具還支持遠程模式:

    Server:以監聽模式啟動glances

    啟動方式:glances -s -B IPADDR

    -B 用於指明監聽本地地址

    Client:以遠程模式啟動glances,遠程煉乳指定服務器,並Server上的相關性能數據

    啟動方式:glances -c IPADDR

    -c 用於連入的服務器的地址


    當系統出現問題的時候,排查的過程中這些工具可能都會用到,因為每一個工具或簡單或復雜,都有它自己的用途,很多情況下從最簡單的工具排查問題開始,一步一步到最後使用類似htop、glances一類的強大工具,總有一個能找出問題所在

    Linux進程/進程管理工具