天天看點

12-linux程序管理工具2

前期基礎知識準備,包括linux基礎知識中的關于虛拟化的一些概念

    CPU:通過timeslice

    memory:通過線性位址

    IO:通過分時複用

了解一些程序檢視工具,包括:pstree,ps,pgrep,pidof,top,htop

    htop指令(相對比較好用,這裡特别再提一下):

        選項:

            -d #:指定延遲時間

            -u username:僅顯示指定使用者的程序

            -s colomn:以指定字段進行排序

        指令:

            s:跟蹤標明程序的系統調用

            l:顯示標明程序打開的檔案清單

            a:将標明的程序綁定至某指定CPU核心

            t:顯示程序樹

        注意:需要使用fedora-epel源

這裡對linux程序檢視及管理工具的相關知識進行梳理的第二部分。

vmstat指令(比較早的一種工具,)

    vmstat [options] [delay [count]]

        procs:

            r:等待運作的程序的個數

            b:處于不可中斷睡眠态的程序個數(被阻塞的隊列的長度)

        memory

            swpd:交換記憶體的使用總量

            free:空閑實體記憶體總量

            buffer:用于buffer的記憶體總量

            cache:用于cache的記憶體總量

        swap

            si:資料進入swap中的資料速率(kb/s)

            so:資料離開swap中的資料速率(kb/s)

        io

            bi:從塊裝置讀入資料到系統的速率(kb/s)

            bo:儲存資料至塊裝置的速率

        system

            in:interrupts,中斷速率

            cs:context switch,程序切換速率

        cpu:

            us 使用者空間占比

            sy 核心空間占比

            id 空閑

            wa io完成所消耗時間比例 

            st 被偷走的時間比例

        選項

        vmstat -s 與cat /proc/meminfo的作用相似

            -s: 顯示記憶體的統計資料

        pmap - report memory map of a process

            記憶體映射表:顯示從線性位址到實體位址的映射

            pmap [options] pid [...]

                -x:顯示詳細格式的資訊

            另一種實作

                cat /proc/PID/maps

    glances指令:

        glances [-bdehmnrsvyz] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [-t refresh] [-f file] [-o output]

        内建指令

            a sort processes automatically

            l show/hide logs

            c sort processes by cpu%

            b bytes or bits for network i/o

            m sort processes by mem%

            w delete warning logs

            p sort processes by name

            x delete warning and critical logs

            d show/hide disk i/o stats

            h show/hide this help screen

            f show/hide file system stats 

            t view network i/o as combination

            n show/hide network stats 

            u view cumulative network i/o

            s show/hide sensors stats

            q quit(esc and ctrl-c also work)

            y show/hide hddtemp stats

        常用選項:

            -b:以byte為機關顯示網卡資料速率

            -d:關閉磁盤i/o子產品

            -f:/path/to/somefile 設定輸入文本位置

            -o:(html/csv)輸出格式

            -m:禁用mount子產品

            -n:禁用網絡子產品

            -t #:延遲時間間隔

            -l:每個cpu的相關資料單獨顯示

        c/s模式下運作glances指令

            服務模式:

                glances -s -B IPADDR

                IPADDR:指明監聽于本機哪個位址

            用戶端模式:

                glances -c IPADDR

                IPADDR:要連入的伺服器端位址

    dstat指令

        dstat [-afv] [options...] [delay [count]]

            -c:顯示cpu相關資訊

                -C #,#,...,total

            -d:顯示disk相關資訊

                -D total,sda,sdb,...

            -g:顯示page相關統計資料

            -m:顯示memory相關統計資料

            -n:顯示network相關統計資料

            -p:顯示process相關統計資料

            -r:顯示io請求相關的統計資料

            -s:顯示swapped相關的統計資料

            --tcp

            --upd

            --unix

            --raw

            --socket

            --ipc 程序間通信的統計資料

            --top-cpu:顯示最占用cpu的程序

            --top-io:顯示最占用io的程序

            --top-mem:顯示最占用記憶體的程序

            --top-lantency:顯示延遲最大的程序

    kill指令:

        向程序發送控制信号,以實作對程序管理

        顯示目前系統可用信号

            kill -l列出支援發送的信号

            man 7 signal

            常用信号:

                1)sighup:無須關閉程序而讓其重讀配置檔案

                2)sigini:中止正在運作的程序,相當于ctrl+c

                9)sigkill:殺死正在運作的程序

                15)sigterm:終止正在運作的程序

                18)sigcont:

                19)sigstop:

            指定信号的方法:

                (1)信号的數字辨別:1,2,9

                (2)信号完整名稱:sighup

                (3)信号的簡寫名稱:hup

        向程序發信号:

            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指令

        nice [OPTIONS] [COMMAND [ARG]...]

        nice,renice

    renice指令

        renice [-n] priority pid...

    檢視

        ps,axo,pid,comn,ni

未涉及到的指令:sar,tsar,iostat,iftop