首頁 > 軟體

Linux進程管理相關命令詳述

2020-06-16 16:53:25

Linux系統上與進程有關的命令:

檢視類命令:

ps,pstree,pidof,pgreppkill,top,htop,glances,dstat,vmstat,pmap

管理類命令:

bg,fg,jobs,kill,killall,nohup,nice,renice

pstree命令:

pstree - display a tree of processes

顯示進程之間的關係,用樹狀圖表示

ps命令:

   ps - report a snapshot of the current processes.

   顯示當前進程的資訊;

   ps [option]

   1 UNIX 風格;必須在選項前邊加上-;

   2 BSD 風格;在選項前邊不能有-;

   3 GUN 風格;再選項前邊必須有兩個-;

欄位含義:

USER:進程的屬主;進程的發起者;

PID:標識進程的唯一性的數位識別符號;

CPU:進程在執行過程中佔用的CPU處理時間的百分比;

%MEM;進程佔用的實體記憶體百分比;

VSZ:虛擬記憶體集,可交換記憶體集;

RSS:常駐記憶體集,不可交換記憶體集;

TTY:進程與哪個終端有關聯的,"?"則表示與終端無關; 

STAT:

R    執行狀態;running or runnable (on run queue)
S    可中斷睡眠態; interruptible sleep (waiting for an event to complete)
D    不可終端睡眠態; uninterruptible sleep (usually IO)
t    在跟蹤期間被停止;stopped by debugger during the tracing
T    停止進程控制信號;stopped by job control signal
X    死進程; dead (should never be seen)
Z    殭屍進程; defunct ("zombie") process, terminated but not reaped by its parent
<    高優先順序; high-priority (not nice to other users)
N    低優先順序; low-priority (nice to other users)
L    頁面是否鎖進記憶體中;has pages locked into memory (for real-time and custom IO)
s    對談領導; is a session leader
l    多執行緒;is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+    前行程群組; is in the foreground process group

START:至今仍未被結束的進程被開啟的時間戳;

TIME:當前進程累計占用CPU的總時間;

COMMAND:啟動該進程的命令列引數;

BSD風格的選項:

a:顯示所有與終端相關的進程;

x:顯示所有與終端無關的進程;

u:顯示發起進程的使用者賬戶名稱;

o format:以自定義的欄位,顯示ps命令的執行結果;

UNIX風格的選項:

-u:顯示與指定使用者相關的進程;

-e:顯示所有的進程

-f:顯示完整格式的進程資訊:

   PPID:父進程的pid

   C:表示進程佔用的CPU的時間的百分比

-F:顯示完整格式的記憶體資訊:(多了幾項內容)

   SZ:虛擬記憶體集

   RSS:常駐記憶體集

   PSR:執行此進程的CPU的核心編號

-H:顯示進程的層級結構(父子關係)

-o format:以自定義的欄位,顯示ps命令的執行過結果;

pgrep,pkill命令

pgrep, pkill - look up or signal processes based on name and other attributes

pgrep是查詢進程

pkill是殺掉進程

pgrep  [option]  pattern

pkill [option] pattern

-U, --uid :顯示進程的真實使用者ID

-u:顯示進程的有效使用者ID

-t terminal:顯示與指定終端關聯的進程;

-a:顯示進程的完整命令列引數;

比如:

   我在kill掉我的ssh後,我的 X shell 就斷開了,因為 X shell 是基於ssh協定來進行遠端連線的,我只能在我的虛擬機器上重新啟動了一下ssh進程;

然後,我的 X shell 才可以正常連上;

pidof:

pidof -- find the process ID of a running program.

根據指定的正在執行的進程名稱查詢其對於的進程號;

top命令:

   top - display Linux processes

當在linux中輸入top時;我們會看到如圖所示的動態的顯示資訊:解釋一下具體的資訊

第一行:

   當前系統時間;

   系統自上次斷電以後執行的總時長;

   當前登入系統的使用者的總數;

   在過去的1分鐘,5分鐘,15分鐘的三個時間段內,CPU上等待執行的進程的佇列的長度。

第二行:

   系統中執行的進程的總數;

   正在執行的進程數;

   處於睡眠態的進程數;

   已停止的進程數;

   僵死態的進程數;

第三行:各類進程佔用CPU時間的百分比的統計資訊

   us:user space,使用者空間中的進程佔用CPU時間的百分比;

   sy:system,核心空間中的核心進程佔用CPU時間的百分比;

   ni:nice,使用nice值調整了進程的優先順序之後額外多占CPU時間的百分比;

   id:idel,CPU空閒時間的百分比;

   wa:waiting,等待IO完成的進程佔用的CPU時間的百分比;

   hi:hardware interupting,處理硬體中斷事件所限號的CPU時間的百分比;

   si:software interupting,處理軟體中斷事件所限號的CPU時間的百分比;

   st:stolen,被虛擬化程式等進程偷偷佔用的CPU時間的百分比;

第四行:以kib為單位顯示實體記憶體空間的使用情況的統計資訊;

   total:實體記憶體空間的總大小;

   free:空閒的物理空間大小;

   userd:已經被使用的物理空間的大小,不可回收;

   buff/cache:用於緩衝區和緩衝區的實體記憶體的空間大小;這段記憶體是可以隨時回收,並不算真正的消耗;    

第五行:以kib為單位顯示swap空間的使用情況的統計資訊;

   total:swap空間的總大小;

free:swap空間剩餘空間大小;

used:已經被佔用的swap空間大小;

   avail mem:真正的可用的實體記憶體的空間大小;

互動式命令:(在進入介面之後才會生效的命令)

    1:顯示或隱藏CPU各核心的詳細資訊;

P:根據各個進程對CPU時間的占用百分比進行降序排序;

M:根據各個進程對實體記憶體空間佔用的百分比進行降序排序;

T:根據各個進程對CPU時間佔用的百分比進行降序排序;

l:顯示或隱藏第一行,uptime等資訊;

t:顯示或隱藏第二、三行資訊

m:顯示或隱藏第四、五行資訊

q:退出top的互動式模式

s:修改top命令的重新整理時間間隔;

k:向指定PID的進程傳送指定的信號;

       信號:kill -l查詢

常用的選項:

   -d #:指定top互動式模式中的重新整理間隔,預設是3秒;

   -b:非互動式顯示結果

vmstat命令:

Procs

r: 等待執行的進程數

b: 處在非中斷睡眠狀態的進程數

w: 被交換出去的可執行的進程數。

     此數由 linux 計算得出,但 linux 並不耗盡交換空間

Memory

swpd: 虛擬記憶體使用情況,單位:KB

free: 空閒的記憶體,單位KB

buff: 被用來做為快取的記憶體數,單位:KB

Swap

si: 從磁碟交換到記憶體的交換頁數量,單位:KB/秒

o: 從記憶體交換到磁碟的交換頁數量,單位:KB/秒

IO

bi: 傳送到塊裝置的塊數,單位:塊/秒

bo: 從塊裝置接收到的塊數,單位:塊/秒

System

in: 每秒的中斷數,包括時鐘中斷

cs: 每秒的環境(上下文)切換次數

CPU

按 CPU 的總使用百分比來顯示

us: CPU 使用時間

sy: CPU 系統使用時間

id: 閒置時間

常用選項:

-a,--active:顯示活躍的以及非活躍的記憶體空間數量;

-s,--stats:從/proc/meminfo檔案中抽取的資訊,加工後輸出;

delay:指示在指定的時間重複執行vmstat命令;預設單位為秒;

count:重複執行vmstat命令的次數;

pmap命令:

pmap - report memory map of a process

pmap [options] pid [...]

 -x, --extended:顯示擴充套件資訊;

htop - interactive process viewer

htop [-dChusv]

常用選項:

   -d --delay=DELAY:htop命令的資料重新整理時間間隔;

    -s:根據指定的欄位進行排序;

    -u:僅顯示指定使用者擁有的進程;

常用的互動式命令:

    l:顯示指定進行所有開啟的檔案列表;

    t:顯示進程樹結構,可以顯示出進程之間的父子關係;相當於F5鍵的功能;

    a:設定進程的CPU親源性,將選定進程的系結至某個CPU核心上執行;

glances:

glances - A cross-platform curses-based monitoring tool

glances [-bdmn] [-t refresh] [-f file] [-o output]

常用選項:

   -b:以Byte為單位顯示網絡卡的資料通訊速率;預設是位元每秒;

    -d:禁用disk I/O模組;

    -m:禁用mount模組;

    -n:禁用network模組;

    -t refresh:以秒為單位指定資料重新整理時間間隔;

    -f /PATH/TO/OUTPUT_DIR:指定輸出檔案的路徑;

    -o {HTML|CSV}:為輸出到檔案的資料指定資料格式;

    -s:將glances進程作為服務進程,因此可以提供基於通訊端的網路存取;

    -B @IP|HOST:將glances進程系結到指定的IP地址上;通常與-s選項一起使用;

glances可以工作於C/S模型下;

    S:伺服器模式

     # glances -s -B IPADDR

     IPADDR指的是伺服器上本地某個可用的IP地址;

    C:用戶端模式

     # glances -c SERVER_IPADDR

     SERVER_IPADDR指的是從遠端用戶端是哪個發起連線的目標伺服器的IP地址;

glances互動式操作命令;

    b:網路模組中的速率統計在bps和Bps間切換;

    c:根據CPU占用率進行進程排序;

    m:根據記憶體占用率進行進程排序;

    n:隱藏或顯示NERWORK模組;

   d:隱藏或顯示DISK模組;

   f:隱藏或顯示FILE模組;

   t:恢復預設進程排序;

   h:顯示help幫助資訊;

   ....

dstat:

dstat - versatile tool for generating system resource statistics

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

常用選項:

    -c,--cpu:僅顯示與CPU相關的統計資訊;

    -d,--disk:僅顯示與磁碟等IO裝置相關的統計資訊;

    -g,--page:僅顯示與page相關的資訊;

    -n,--net:僅顯示與網路介面相關的統計資訊;

    -s,--swap:僅顯示與交換分割區相關的統計資訊;

    -y,--system:僅顯示與系統相關的統計資訊;

    --tcp:僅顯示與TCP協定的連線狀態相關的統計資訊;

    --udp:僅顯示與UDP協定的連線狀態相關的統計資訊;

kill:

kill - 終止進程

kill [-s signal|-p] [--] pid...

kill -l [signal]:檢視當前系統中支援的信號的種類和信號名稱;

有效的信號表示方法:

  1.使用信號的數位編碼進行信號表示;

  2.使用信號的完整名稱進行信號表示;

  3.使用信號的簡寫名稱進行信號表示;簡寫名稱不包含"SIG"的其餘部分;

常用的信號:

  1) SIGHUP: 無需關閉對應進程而直接讓其重新讀取其自身的組態檔;

  2) SIGINT:終止執行於前台的進程,使用Ctrl+c組合鍵,可以傳送此信號;

  9) SIGKILL: 沒有任何預兆終止正在執行的進程,進程所有佔用的資源都不會被立即回收;

  15) SIGTERM:kill命令預設傳送的信號;終止進程的執行,

  18) SIGCONT:讓轉入後台的進程在後台繼續執行;

  19) SIGSTOP:讓轉入後台的進程在後台停止執行;

killall

killall - 以名字方式來殺死進程

killall [options] ...PROCRSS_NAME..

常用選項:

   -u:僅向指定所有者所擁有的進程傳送信號;

 -s:向指定名稱的進程傳送指定的非SIGTERM信號;

 -I:忽略進程名稱大小寫的區別;

進程作業:

前台作業:

    foreground jobs,一般是通過終端啟動並且在啟動後一直佔據終端的進程;

後台作業:

    background jobs,一般系統啟動時隨系統啟動,也可以通過終端啟動,但啟動後理解釋放對終端的佔用,此時我們稱其為"後台執行";

使進程從前台轉移至後台:

    1.正在執行的前台作業;

    Ctrl+z

    2.對於尚未啟動的進程,使其在啟動後自動轉入後台:

# COMMAND &

注意:此類從前台啟動直接轉入後台執行的進程,始終是與終端有關的進程,因此,如果終端被關閉,或shell進程被終止,則此類進程也會被終止;

3.對於尚未啟動的進程,使其在啟動後自動轉入後台,並同時剝離其與終端的關聯關係;

    # nohup COMMAND &

檢視後台作業的資訊:

jobs

將後台作業轉入到前台執行:

fg [JOB_ID]

 注意:如果省略JOB_ID,則在後台進程中以"+"標識的作業會被轉入前台;

終止後台進程作業:

kill %JOB_ID:將後台作業結束;

調整進程優先順序的命令;

    nice,renice

進程的優先順序:

    0-139

0

1-99

100-139:動態優先順序;通過調整進程的nice值來改變進程的動態優先順序;

 NICE值的取值範圍:-20~19

預設情況下,所有使用者進程的動態優先順序都是120,而所有進程的NICE值預設都為0;

只有超級使用者root才能使用附屬的NICE值,進而提升進程的優先順序;普通使用者僅能使用正數的NICE值,進而降低進程的優先順序;

nice

nice - run a program with modified scheduling priority

nice [OPTION] [COMMAND [ARG]...]

    -n:為後面的進程調整nice值;預設為10;

renice:

renice - alter priority of running processes

renice [-n] priority [-gpu] identifier...

常用選項:

   -n priority :設定此次要調整的nice值;即在原有的nice值之上追加上此處指定的數量;

-p pid:

本文永久更新連結地址https://www.linuxidc.com/Linux/2018-03/151483.htm


IT145.com E-mail:sddin#qq.com