進程管理工具

在我們瞭解進程以後,我接下來要掌握進程的管理工具如:pstree , ps , pgrep , pidof , top ,htop , glance , pmap , vmstat , dstat , kill , pkill , uptime 等;Linux 系統各進程的相關信息均保存在/proc/PID 目錄下的各文件中;


 

一,pstree


pstree:是以樹狀的形式來顯示進程的關係;

pstree [option]

     -p : 連進程編號一塊顯示出來;

wKioL1fSaArR2uEvAABQNAXESYQ615.png-wh_50

    -a : 顯示每個程序的完整指令,包含路徑,參數或是常駐服務的標示;
wKioL1fSacGTqHjjAABEjaBCup8465.png-wh_50


二,ps


ps:查看進程的信息和搜索進程;

ps [OPTION]...

支持三種類型選項的格式:

    GUN 選項如--help ;

    UNIX 選項(以一個“-“開頭的選項)如-A -e:

        選項:        

            -e:  顯示所有進程

            -f:  顯示完整格式程序信息

            -F:  顯示更完整格式的進程信息

            -H:  以進程層級格式顯示進程相關信息

        常用組合:-ef , -eFH

wKioL1fSp7nArSfwAABD8xEnTb0064.png-wh_50

wKiom1fSp7mzC84fAAAq8_56Q2Q540.png-wh_50

    BSD 選項(直接用字母開頭的)如a:

        默認顯示當前終端中的進程

            a :顯示所有終端中的進程

            x :顯示不鏈接終端的進程

            u :顯示進程所有者的信息

            f :顯示進程的父進程

            l :長格式輸出

            o :屬性…  選項顯示定製的信息:

                pid 、comm 、%cpu 、%mem 、state 、tty 、euser(執行用戶) 、ruser(真正用戶)

        常用組合:aux,axl

wKiom1fSoZ2g-nmVAABKj14XDbY838.png-wh_50

wKiom1fSoZ6wFj6oAABGHJsGfnw151.png-wh_50

常用組合:自定義:

    -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm,等等

    axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm,等等

wKiom1fSqajzuGQVAAASyUVEzLU948.png-wh_50

wKioL1fSqanTG1KAAAAZaSDTM5k588.png-wh_50

ps查看進程輸出內容的解釋:

USER
用戶名
UID用戶ID(user ID)
PID進程ID(Process ID)
PPID父進程的進程ID(Parent Process id)
SID會話ID(Session id)
%CPU進程的CPU佔用率
%MEM進程的內存佔用率
VSZVirtual memory SiZe ,虛擬內存集,線性內存(虛擬內存的大小)
RSSReSident Size,  常駐內存集(實際內存的大小)
TTY與進程關聯的終端
STAT進程狀態
  STAT
R :running(運行)
S: interruptable sleeping(睡眠)
D: uninterruptable sleeping(不可中斷)
I:空閒
T: stopped(終止)
Z: zombie(僵死)
+:  前臺進程
l:  多線程進程
N :低優先級進程
<:  高優先級進程
s: session leader ,會話(子進程)發起者
START進程啓動時間和日期
TIME進程使用的總CPU時間
COMMAND正在執行的命令行命令
NI
優先級(Nice)
PRI進程優先級編號(Priority)
WCHAN進程正在睡眠的內核函數名;該函數的名稱是從/root/system.map文件中獲得的
FLAGS與進程相關的數字標識


三,pgrep

pgrep:按預定義的模式搜索進程;

pgrep [options] pattern

    -u uid: effective user ,真正有效者

wKiom1fStRKQguhMAAAdJnJtnFk433.png-wh_50

    -U uid: real user ,真正發起運行命令者

wKioL1fStRzjig6UAAAIVbtf-FU949.png-wh_50

    -t terminal:  與指定終端相關的進程

wKiom1fStSnwUGr4AAAJ6p6-pWk736.png-wh_50

    -l:  顯示進程名

wKioL1fStTuCTq_eAAAJd14PGlU648.png-wh_50

    -a:  顯示完整格式的進程名

wKiom1fStUqy51jmAAAUQGF2PrE757.png-wh_50

    -P pid:  顯示指定進程的子進程



四,pidof


pidof:是Linux系統中用來查找正在運行進程的進程號

按確切的程序名稱:/sbin/pido

如:pidof bash

wKiom1fTiPijco8hAAAILH1tFw0107.png-wh_50


五,top


top :動態的顯示了系統的狀況;

選項:

    -d #:  指定刷新時間間隔,默認爲3秒

    -b:  以批次方式

    -n #:  顯示多少批次

有許多內置命令:

    排序:

        P :以佔據的CPU 百分比,%CPU

        M :佔據內存百分比,%MEM

        T :累積佔據CPU 時長,TIME+

    首部信息顯示:

        uptime 信息:l 命令

        tasks 及cpu 信息:t 命令

        cpu 分別顯示:1 ( 數字)

        memory 信息:m 命令

    退出命令:q

    修改刷新時間間隔:s

    終止指定進程:k

    保存文件:W(保存在 /root/.toprc)

top命令欄位信息簡介:

wKioL1fTmZfR05ySAAAqGJmhxnA727.png-wh_50

第一行: 任務隊列信息:

13:06:34

當前時間

up 55 min

系統運行時間,格式爲時:分

1 user

當前登錄用戶數

load average: 0.00, 0.01, 0.05

系統負載,即任務隊列的平均長度, 三個數值分別爲  1分鐘、5分鐘、15分鐘前到現在的平均值;

第二行:進程的信息(Tasks):

Tasks: 363 total

進程總數

2 running

正在運行的進程數

361 sleeping

睡眠的進程數

0 stopped

停止的進程數

0 zombie

殭屍進程數

第三行:CPU的信息 (%CPU(s)):

  0.3 us

用戶空間佔用CPU百分比

0.7 sy

內核空間佔用CPU百分比

0.0 ni

用戶進程空間內改變過優先級的進程佔用CPU百分比

99.0 id

空閒CPU百分比

0.0 wa

等待輸入輸出的CPU時間百分比

0.0 hi

硬中斷

0.0 si

軟中斷(模式切換)
0.0 st
虛擬機偷走的時間

第四行:內存信息(KiB Mem):

 1001332 total

物理內存總量

103192 used

使用的物理內存總量

768632 free

空閒內存總量

129508 buff/cache

用作內核緩存的內存量

第五行:交換信息(KiB Swap):

 4195320 total

交換區總量

0 used

使用的交換區總量

4195320 free

空閒交換區總量

761356 avail

緩衝的交換區總量。 內存中的內容被換出到交換區,而後又被換入到內存,但使用過的交換區尚未被覆蓋, 該數值即爲這些內容已存在於內存中的交換區的大小。相應的內存再次被換出時可不必再對交換區寫入。


六,htop


htop 命令:(top的增強版)需從Fedora-EPEL 源安裝:http://10.1.0.1/fedora-epel/7/x86_64/

wKioL1fToLHwYlZPAAAXL877N74080.png-wh_50

wKiom1fToLHAOQX0AABHOvk_CZo264.png-wh_50

wKioL1fToLLixzrcAAAtkSjgpsg847.png-wh_50

wKioL1fToLLSR9ZrAACzXfJrErI003.png-wh_50

    選項:

        -d #:  指定延遲時間;

        -u UserName:  僅顯示指定用戶的進程;

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

    子命令:

        s:  跟蹤選定進程的系統調用;

        l:  顯示選定進程打開的文件列表;

        a :將選定的進程綁定至某指定CPU 核心;

        t:  顯示進程樹


七,vmstat


vmstat 命令:虛擬內存信息

    vmstat [options] [delay [count]]

    vmstat 2 5

wKiom1fTpnehCF5bAAAila7N9U0747.png-wh_50

procs  r
等待運行的進程的個數,和核心數有關
  b處於不可中斷睡眠態的進程個數( 被阻塞的隊列的長度)
memoryswpd交換內存的使用總量
free空閒物理內存總量
buffer用於buffer 的內存總量
cache用於cache 的內存總量
swap
si從磁盤交換進內存的數據速率(kb/s)
so從內存交換至磁盤的數據速率(kb/s)
iobi從塊設備讀入數據到系統的速率(kb/s)
bo保存數據至塊設備的速率
systemininterrupts,  中斷速率,包括時鐘
cscontext switch,  進程切換速率
cpuusTime spent running non-kernel code, 用戶CPU時間
syTime spent running kernel code, 系統CPU時間
idTime spent idle, 空閒CPU時間
waTime spent waiting for IO,等待IO CPU時間
stTime stolen from a virtual machine,虛擬機偷走的時間

    選項:

        -s:  顯示內存的統計數據

wKioL1fTptnSbcT4AABFACjU7xg514.png-wh_50


八,pmap


pmap 命令 :進程對應的內存映射

pmap [options] pid [...]

    -x:  顯示詳細格式的信息;

    #pmap 1692

wKiom1fTqp_TZQSeAABYv4gOxMY206.png-wh_50

    另外一種實現:

    # cat /proc/1692/maps

wKiom1fTqsOi9FYcAABr8MavFSE879.png-wh_50


九,glance


glances 命令:系統資源監控, (需從EPEL源中下載)

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

wKioL1fTs1mRwDBNAACA4KkdZF4229.png-wh_50

內建命令:

a
Sort processes automaticallybBytes or bits for network I/O
c
Sort processes by CPU%d

Show/hide disk I/O stats

f

Show/hide file system stats

h

Show/hide this help screen

i

Sort processes by I/O rate

l
Show/hide logs
m

Sort processes by MEM%

n

Show/hide network stats

p

Sort processes by name

q

Quit (Esc and Ctrl-C also work)

s

Show/hide sensors stats

t

View network I/O as combination

u

View cumulative network I/O

y

Show/hide hddtemp stats

1

Global CPU or per-CPU stats

mw

Delete warning logs

常用選項:

    -b:  以Byte 爲單位顯示網卡數據速率

    -d:  關閉磁盤I/O 模塊

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

    -o {HTML|CSV} :輸出格式

    -m:  禁用mount 模塊

    -n:  禁用網絡模塊

    -t #:  延遲時間間隔

    -1 :每個CPU 的相關數據單獨顯示

C/S 模式下運行glances 命令:

服務模式:

    glances -s -B IPADDR

    IPADDR:  指明監聽的本機哪個地址

wKioL1fTszzz6Oi3AAAKMhUp2WI160.png-wh_50

客戶端模式:

    glances -c IPADDR

    IPADDR :要連入的服務器端地址

wKiom1fTs0bQegyOAAB1_NOVXcQ171.png-wh_50


十,dstat


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

    --udp

    --unix

    --raw

    --socket

    --ipc

    --top-cpu :顯示最佔用CPU 的進程

    --top-io:  顯示最佔用io 的進程

    --top-mem:  顯示最佔用內存的進程

    --top-latency: 顯示延遲最大的進程

wKiom1fTtnOitSv8AAA6xJe53Mw861.png-wh_50


十一,kill,pkill


kill 命令:

向進程發送控制信號,以實現對進程管理

顯示當前系統可用信號: kill -l

wKiom1fTyuGynkuTAABF7wFzG40529.png-wh_50

常用信號:man 7 signal

    1) SIGHUP:  無須關閉進程而讓其重讀配置文件

wKiom1fTyy_B9H5RAAAHqDUUXUA275.png-wh_50

    2) SIGINT:  中止正在運行的進程;相當於Ctrl+c

wKioL1fTyx2BIRaQAAA7bVtiqnc462.png-wh_50

    9) SIGKILL:  殺死正在運行的進程

    15) SIGTERM :終止正在運行的進程

    18) SIGCONT :繼續運行

wKiom1fTywCwMvoXAABLHyLbGic888.png-wh_50

    19) SIGSTOP :後臺休眠

wKioL1fTywnz_Kp_AABH5MyACFc530.png-wh_50

指定信號的方法:

    (1)  信號的數字標識;1, 2, 9

    (2)  信號完整名稱;SIGHUP

    (3)  信號的簡寫名稱;HUP

進程管理工具

    按PID :kill [-SIGNAL] pid …

    按名稱:killall [-SIGNAL] comm…

    按模式:pkill [options] pattern

        -SIGNAL

        -u uid: effective user ,生效者

        -U uid: real user ,真正發起運行命令者

        -t terminal:  與指定終端相關的進程

        -l:  顯示進程名

        -a:  顯示完整格式的進程名

        -P pid:  顯示父進程爲此處指定的進程的進程列表

wKiom1fTy2bhahykAABYD2bT7w0319.png-wh_50

wKioL1fTy2aiDSIGAABAvx0cBTQ972.png-wh_50


十二,uptime


uptime:查看當前系統負載情況;

wKioL1fTkBjR9fQ9AAAJaYgxau4151.png-wh_50

顯示內容的信息:

    顯示當前時間,系統已啓動的時間、當前上線人數,系統平均負載(1 、5 、10 分鐘的平均負載,一般不會超過1) ;

系統平均負載:

    指在特定時間間隔內運行隊列中的平均進程數 。

如果每個CPU 內核的當前活動進程數不大於3的話,那麼系統的性能良好。如果每個CPU 內核的任務數大於5,那麼這臺機器的性能有嚴重問題;

如果linux 主機是1個雙核CPU 的話,當Load Average爲6 的時候說明機器已經被充分使用了;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章