天天看點

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:終止指定的作業,這裡的%不能省去

linux程式檢視及管理的工具

 十二. 程序優先級調整:

          靜态優先級: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

linux程式檢視及管理的工具
linux程式檢視及管理的工具