進程管理工具的使用

進程管理工具的使用

Linux進程管理工具: pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, job, 

 

pstree: 顯示進程樹

-p: 顯示各進程的PID

 

ps: 顯示進程狀態的命令

 

Linux各進程的相關信息在/proc目錄有一個以其PID命令的目錄下的衆多文件中;

支持兩種使用風格:SysV, BSD

 

進程分類(根據進程是否通過終端啓動):

與終端相關的進程: a

與終端無關的進程: x

 

常用組合1aux

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

 

VSZ: Virutal memory SiZe

RSS:常駐內存集

 

STAT:進程狀態

Rrunning

S:可中斷睡眠

D: 不可中斷睡眠

T:停止

Zzombie

 

s: session leader

+: 前臺進程,frontground

l: 多線程進程

N: 低優先級進程

<: 高優先級進程

 

COMMAND

[]: 內核線程

 

常用組合2-ef

-e: 顯示所有進程

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

 

常用組合3-eFH

-F: 顯示額外信息

-H:顯示進程的層次結構

 

自定義要顯示的信息:axo FIELD

ps axo pid,command,psr,pri,ni

psr: 進程所運行在的CPU

pri: 優先級, priority

ni: nice

 

pgrep: 

-U UID:僅顯示由指定運行的進程PID

-t term: 僅顯示指定的終端設備的進程PID

-l: 顯示進程PID的同時顯示進程名

 

用法:pgrep [OPTIONS] [PATTERN]

PATTERN: 支持正則表達元字符書寫模式實現進程過濾;

 

pidof: 根據進程名獲取其PID

pidof PROGRAM

 

top: 

P: CPU百分比

MMemory佔用量

TCPU累積時間佔用量

 

l: top行信息是否顯示;

load avg:

CPU上等待運行的進程隊列的隊列長度;

過去1分鐘、5分鐘、15分鐘的平均長度;

 

t:是否顯示進程及CPU相關的信息

1:是否單獨顯示每顆CPU的使用率

us: user space

sy: system

ni: nice

id: idle

wa: waiting io

hi: hardware interrupt

si: software interrupt

st: stolen

 

m: 是否顯示內存及swap相關的信息

q: 退出top

s: 修改刷新時間間隔;

k: 殺死指定進程

 

常用選項:

-d #: 指定刷新時間間隔;

-b: 以批次的顯示;

-n #: 顯示的批次;

 

htop: 

選項:

-d #: 刷新時間間隔

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

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

 

交互式命令:

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

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

l: 跟蹤選定進程打開的文件

t: 顯示進程樹

a: 設定cpu親緣性(將選定的進程綁定在某CPU上)

 

vmstat

procs:

r:等待運行的進程的個數;

b:處於不可中斷睡眠態的進程個數;(被阻塞的進程隊列的長度)

 

memory: 

swpd: 虛擬內存使用的總量;

free: 空閒的物理內存總量;

buffer:用於buffer的內存總量;

cache: 用於cache的內存總量;

 

swap

si: 數據進入swap中的速率(kb/s)

so: 數據離開swap中的速率(kb/s)

 

io: 

bi: 從塊設備讀入數據到系統的速率

bo: 保存數據至塊設備的速率

 

system:

in: interrupts,中斷速率

cs: context switch, 上下文切換速率

選項:

-s: 顯示內存統計數據

 

 

回顧:進程管理基礎概念進程狀態查看工具

進程管理的基礎概念:進程調度、進程優先級;

資源分配基本單位:CPU、內存、IO

CPUtimeslice

內存:虛擬內存、分佈機制、MMU

IO:複用;

 

進程狀態查看:/proc/#

pstree, ps, pgrep, pidof

top, htop, vmstat

 

Linux進程狀態查看及管理(2)

pmap, glances, dstat, kill, job, bg, fg, nice, renice

 

pmap:查看指定進程內存映射關係

# pmap [OPTIONS] PID

-x: 顯示擴展信息

 

# cat /proc/PID/maps

 

glances: 

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

 

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

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

-f /path/to/somewhere: 設置輸出文件的位置及其格式;

-o {HTML|CSV}

-m: 禁用mount模塊

-n: 禁用網絡模塊

-t #: 指定刷新時間間隔

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

 

交互式命令:有許多交互式命令來定義glances的顯示信息,以及排序方式等;

h: 顯示幫助

 

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

服務模式:

glances -s -B IPADDR

 

IPADDR:自己監聽的本機地址

 

客戶端模式:

glances -c IPADDR

 

IPADDR: 遠程服務器監聽的地址

 

dstat: 支持插件

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

-c

-d

-g, --page

-i

-l

-m

-p

-r, --io

-s, --swap

-t, --time

-y, --sys

--aio: 顯示異步io統計數據

--ipc: ipc相關的信息

--raw: raw socket

--tcp: tcp socket

--udp: udp socket

--socket: raw, tcp, udp

--unix: unix sock

 

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

--top-bio:顯示最佔用block IO的進程

--top-mem: 顯示最耗費內存的進程

--top-io:最佔用IO的進程

 

IPC: 進程間通信

message queue, semerphore, shared memory, signal

 

signal:傳遞給進程的微小信息

顯示可用信號:

kill -l

man 7 signal

 

向進程發信號:

kill [-SIGNAL] PID

 

SIGNAL:

(1) 信號的完整名稱,例如SIGHUPSIGINTSIGKILLSIGTERMSIGCONTSIGSTOP

(2) 信號簡稱:HUPKILL

(3) 信號數據標識:12, ...

 

SIGHUP1, 讓進程重讀配置文件中的信息,而無須重啓進程;

SIGINT2, interrupt,打斷正在運行中進程;相當於Ctrl+c

SIGKILL: 9, 強行中止正在運行的進程

SIGTERM15, 優雅關閉正在運行的進程

SIGSTOP19, 暫停進程

SIGCONT: 18,繼續暫停進程

 

killall [-SIGNAL] COMMAND

 

Linux作業控制:job

 

前臺作業通過終端啓動,並且在停止之前會一直佔據終端;

後臺作業:作業啓動之後在後臺運行;不通過啓動,或在終端啓動後直接轉入後臺運行;

 

如何讓作業運行於後臺?

1、運行中的作業:

Ctrl+z

注意:送往後臺後,作業處於stopped狀態;

2、尚未啓動的作業:

COMMAND &

 

此類作業依然屬於與終端相關的作業,因此,在終端結束時,其也會被終止;可以用下而的命令剝離其與終端的關係:

# nohup COMMAND &

 

查看作業:jobs

# jobs

 

作業控制命令:

# fg [[%]JOB_NUM]:把指定的作業調回前臺

# bg [[%]JOB_NUM]:控制指定的作業於後臺繼續運行

# kill [%JOB_NUM]: 中止指定的作業

 

進程優先級調整:nice, renice

靜態優先級:

100-139

  nice: -20, 19

 

   (1) 以指定的nice值啓動一個進程:

   nice -n # COMMAND

 

   (2) 調整運行中的進程的nice值:

   renice -n # PID

 

   注意:普通用戶僅有權限調大nice值;


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