linux 進程管理

介紹Linux進程查看及管理的工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohupsession

 

  一.    pstree命令:多線程

             pstree - display a tree of processesapp

 

  二.    ps: process state, report a snapshot of the current processessocket

     

            Linux系統各進程的相關信息均保存在/proc/PID目錄下的各文件中,每個PID都是一個進程號,PID中的cmdline文件說明了這個進程是由哪一個文件啓動的;tcp

 

            ps [OPTION]... 選項:支持兩種風格ide

               

               1)  BSD風格,前面沒-  ,工具

                    經常使用組合:aux性能

                    u: 以用戶爲中心組織進程狀態信息顯示ui

                    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

相關文章
相關標籤/搜索