1. 程式人生 > >linux進程管理——進程管理相關命令

linux進程管理——進程管理相關命令

ps top glances jobs killall等

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

查看類命令:

ps,pstree,pidof,pgrep\pkill,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:

技術分享圖片




linux進程管理——進程管理相關命令