linux進程查看及管理的工具


 

 介紹Linux進程查看及管理的工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup
 
  一.    pstree命令:
             pstree - display a tree of processes
 
  二.    ps: process state, report a snapshot of the current processes
     
            Linux系統各進程的相關信息均保存在/proc/PID目錄下的各文件中,每一個PID都是一個進程號,PID中的cmdline文件說明了這個進程是由哪個文件啟動的;
 
            ps [OPTION]... 選項:支持兩種風格
               
               1)  BSD風格,前面沒-  ,
                    常用組合:aux
                    u: 以用戶為中心組織進程狀態信息顯示
                    a: 與終端相關的進程;
                    x: 與終端無關的進程;
 
                     ~]# ps aux
                    USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
                        VSZ: Virtual memory SiZe,能使用的虛擬內存大小
                        RSS: ReSident Size, 常駐內存大小,不能放在交換分區中的
                        STAT:進程狀態
                            R:running
                            S: interruptable sleeping
                            D: uninterruptable sleeping
                            T: stopped
                            Z: zombie
                            +: 前台進程
                            l: 多線程進程
                            N:低優先級進程
                            <: 高優先級進程
                            s: session leader,會話創建者,這個啟動后,會引起很多其他進程,如果它被終止,與它相關的進程也會終止
                       COMMAND: 由什么命令啟動的進程
 
               2) 標准風格:
                    常用組合1:-ef (PPID是父進程號)
                    -e: 顯示所有進程
                    -f: 顯示完整格式程序信息
                    -U: 顯示指定用戶進程 ps -U root
                    -o: 自定義顯示輸出
 
                   常用組合2:-eFH
                    -F: 顯示完整格式的進程信息
                    -H: 以進程層級格式顯示進程相關信息
 
                   常用組合3:-eo, axo,指明要顯示的字段
                    例如:  ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
                                 ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
 
                                 ni: nice值
                                 pri: priority,優先級
                                 psr: processor, CPU
                                 rtprio: 實時優先級
 
 三.       pgrep, pkill:
                   pgrep [options] pattern------進程顯示過濾,用法和pkill一樣,比如pgrep -u root -l
 
                   pkill [options] pattern
                       -u uid: effective user,真實有效的用戶
                       -U uid: real user,看到的用戶
                       -t terminal: 與指定終端相關的進程
                       -l: 顯示進程名
                       -a: 顯示完整格式的進程名
                       -P pid: 顯示其父進程為此處指定的進程的進程列表
 
  四.      pidof:
               根據進程名獲取其PID;
 
  五.      top:               
              1)有許多內置命令(就是進入top顯示界面后直接按命令鍵):
                     排序:默認以CPU排序
                       P:以占據的CPU百分比;
                       M:占據內存百分比;
                       T:累積占據CPU時長;
 
                     首部信息顯示:
                       uptime信息:l命令
                       tasks及cpu信息:t命令, cpu分別顯示:1 (數字)  
                       memory信息:m命令,其中us:用戶空間,sy:內核空間,ni:nice值,id:空閑時間,wa:等待I/O時間,hi:硬件中斷時間,si:軟件中斷時間,st:被虛擬技術偷走的時間
 
                     退出命令:q
                     修改刷新時間間隔:s
                     終止指定進程:k
 
               2)參數選項:
                   -d #: 指定刷新時間間隔,默認為3秒;
                   -b: 以批次方式;自動翻頁
                   -n #: 顯示多少批次;比如 top -b -n 1--只顯示第一屏
 
六.        htop命令:
               選項:
                   -d #: 指定刷新時間間隔;
                   -u UserName: 僅顯示指定用戶的進程;
                   -s COLOMN: 以指定字段進行排序;
 
              內建命令:
                   s: 跟蹤選定進程的系統調用;(上下鍵選進程)
                   l: 顯示選定進程打開的文件列表;
                   a:將選定的進程綁定至某指定CPU,比如有多個CPU時,要把進程運行在哪個CPU上
                   t: 顯示進程樹
 
               注意:Fedora-EPEL源中提供此軟件,比如在鏡像源中指定base=mirrors.aliyun.com/epel/7/x86_64/
 
七     vmstat命令:虛擬內存狀態工具---經典
        vmstat [options] [delay [count]]    ,比如 vmstat 2,表示2秒刷新一次,vmstat 2 5,顯示5次退出
 
            1)procs相關:
                r:等待運行的進程的個數,單個CPU時,超過3個就說明CPU性能不夠了;
                b:處於不可中斷睡眠態的進程個數;(被阻塞的隊列的長度);
 
            2) memory:
                swpd: 交換內存的使用總量;
                free:空閑物理內存總量;
                buffer:用於buffer的內存總量;
                cache:用於cache的內存總量;
 
            3)swap:
                si:數據進入swap中的數據速率(kb/s)
                so:數據離開swap中的數據速率(kb/s),重新載入內存
 
            4)io:
                bi:從塊設備(磁盤)讀入數據到系統(內存)的速率;(kb/s)
                bo: 保存數據至塊設備的速率;
 
            5)system:
                in: interrupts, 中斷速率;
                cs: context switch, 進程切換速率;
 
            6)cpu:
                us--用戶空間占據CPU的比例
                sy--內核空間
                id--空閑比例
                wa--等待I/0完成所消耗的時間比例
                st--被虛擬化技術偷走的比例
 
        選項:
            -s: 顯示內存的統計數據
 
 
八.     pmap命令:
          pmap - report memory map of a process,查看進程都占用了哪些內存空間
            pmap [options] pid [...]
                -x: 顯示詳細格式的信息;
 
            另外一種實現方式:
                # cat /proc/PID/maps
 
 
九.     dstat命令:-系統資源統計數據,支持插件來擴展功能,比較好用
          dstat [-afv] [options..] [delay [count]]
            -c: 顯示cpu相關信息;
                -C #,#,...,total ---顯示哪一個CPU信息
            -d: 顯示disk讀寫相關信息;
                -D total,sda,sdb,...單獨顯示某個disk,或全部disk
            -g:顯示page相關統計數據;
            -m: 顯示memory相關統計數據;
            -n: 顯示network相關統計數據;
            -p: 顯示process相關統計數據;
            -r: 顯示io請求相關的統計數據;
            -s: 顯示swapped相關的統計數據;
            --tcp
            --udp
            --unix
            --raw
            --socket---相當於參數tcp,udp,raw一起用
            --ipc ----進程間通訊的相關信息
            --top-cpu:顯示最占用CPU的進程;
            --top-io: 顯示最占用io的進程;
            --top-mem: 顯示最占用內存的進程;
            --top-latency: 顯示延遲最大的進程,運行起來最慢,跟不上CPU;
 
十.   kill命令:
        向進程發送控制信號,以實現對進程管理,不單是殺死進程
 
        顯示當前系統可用信號:
            # kill -l  列出kill支持能發出的信號
            # man 7 signal
 
            常用信號:
                1) SIGHUP: 無須關閉進程而讓其重讀配置文件,就是不重啟就讓修改的配置生效;
                2) SIGINT: 中止正在運行的進程;相當於Ctrl+c;
                9) SIGKILL: 殺死正在運行的進程;
                15) SIGTERM:終止正在運行的進程,溫柔的關閉;
                18) SIGCONT:進程繼續態
                19) SIGSTOP:進程暫停態
 
            指定信號的方法:
                (1) 信號的數字標識;1, 2, 9
                (2) 信號完整名稱;SIGHUP
                (3) 信號的簡寫名稱;HUP,就是把前面的SIG去掉就行
 
           向進程發信號:
            kill [-SIGNAL] PID...
 
           終止“名稱”之下的所有進程:
            killall [-SIGNAL] Program
 
十一.   Linux的作業控制
           前台作業:通過終端啟動,且啟動后一直占據終端;
           后台作業:可以通過終端啟動,但啟動后即轉入后台運行(釋放終端);
 
           如何讓作業運行於后台?
              (1) 運行中的作業
                Ctrl+z
              (2) 尚未啟動的作業
                # COMMAND &
            此類作業雖然被送往后台運行,但其依然與終端相關;如果希望送往后台后,剝離與終端的關系。也就是終端關閉,進程依然運行:
                # nohup COMMAND &
 
            查看所有作業:
                # jobs  ,這個命令輸出會顯示作業號
 
            作業控制:
                # fg % JOB_NUM:把指定的后台作業調回前台;
                # bg % JOB_NUM:讓送往后台的作業在后台繼續運行;
                # kill  % JOB_NUM:終止指定的作業,這里的%不能省去
 
 
 十二. 進程優先級調整:
          靜態優先級:100-139,數字越小,優先級越高
          進程默認啟動時的nice值為0,優先級為120,nice值的范圍是(-20,19)
 
          nice命令:啟動進程時,以指定優先級運行
            nice [OPTION] [COMMAND [ARG]...],例如:nice -n 5 htop
 
          renice命令:對已處於運行態的進程,調整優先級
            renice [-n] priority pid...,例如: renice -n 2 3618
 
          查看:
            ps axo pid,comm,ni
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM