鍍金池/ 教程/ Linux/ 進程管理工具
進程管理工具
objdump 二進制文件分析
scp 跨機遠程拷貝
crontab 定時任務
readelf elf文件格式分析
pstack 跟蹤進程棧
系統(tǒng)管理及IPC資源管理
vmstat 監(jiān)視內存使用情況
strace 跟蹤進程中的系統(tǒng)調用
sar 找出系統(tǒng)瓶頸的利器
ipcs 查詢進程間通信狀態(tài)
ps 進程查看器
性能優(yōu)化
wget 文件下載
top linux下的任務管理器
磁盤管理
size 查看程序內存映像大小
free 查詢可用內存
文件及目錄管理
iostat 監(jiān)視I/O子系統(tǒng)
性能監(jiān)控
程序構建
學會使用命令幫助
gdb 調試利器
網絡工具
nm 目標文件格式分析
lsof 一切皆文件
用戶管理工具
程序調試
ldd 查看程序依賴庫
文本處理

進程管理工具

這一節(jié)我們介紹進程管理工具;

使用進程管理工具,我們可以查詢程序當前的運行狀態(tài),或終止一個進程;

任何進程都與文件關聯(lián);我們會用到lsof工具(list opened files),作用是列舉系統(tǒng)中已經被打開的文件。在linux環(huán)境中,任何事物都是文件,設備是文件,目錄是文件,甚至sockets也是文件。用好lsof命令,對日常的linux管理非常有幫助。

查詢進程

查詢正在運行的進程信息

    $ps -ef

eg:查詢歸屬于用戶colin115的進程

    $ps -ef | grep colin115
    $ps -lu colin115

查詢進程ID(適合只記得部分進程字段)

$pgrep 查找進程

eg:查詢進程名中含有re的進程
[/home/weber#]pgrep -l re
2 kthreadd
28 ecryptfs-kthrea
29515 redis-server

以完整的格式顯示所有的進程

$ps -ajx

顯示進程信息,并實時更新

$top

查看端口占用的進程狀態(tài):

lsof -i:3306

查看用戶username的進程所打開的文件

$lsof -u username

查詢init進程當前打開的文件

$lsof -c init

查詢指定的進程ID(23295)打開的文件:

$lsof -p 23295

查詢指定目錄下被進程開啟的文件(使用+D 遞歸目錄):

$lsof +d mydir1/

終止進程

殺死指定PID的進程 (PID為Process ID)

$kill PID

殺死相關進程

kill -9 3434

殺死job工作 (job為job number)

$kill %job

進程監(jiān)控

查看系統(tǒng)中使用CPU、使用內存最多的進程;

$top
(->)P

輸入top命令后,進入到交互界面;接著輸入字符命令后顯示相應的進程狀態(tài):

對于進程,平時我們最常想知道的就是哪些進程占用CPU最多,占用內存最多。以下兩個命令就可以滿足要求

P:根據CPU使用百分比大小進行排序。
M:根據駐留內存大小進行排序。
i:使top不顯示任何閑置或者僵死進程。

這里介紹最使用的幾個選項,對于更詳細的使用,詳見 :ref:top ;

分析線程棧

使用命令pmap,來輸出進程內存的狀況,可以用來分析線程堆棧;

$pmap PID

eg:
[/home/weber#]ps -fe| grep redis
weber    13508 13070  0 08:14 pts/0    00:00:00 grep --color=auto redis
weber    29515     1  0  2013 ?        02:55:59 ./redis-server redis.conf
[/home/weber#]pmap 29515
29515:   ./redis-server redis.conf
08048000    768K r-x--  /home/weber/soft/redis-2.6.16/src/redis-server
08108000      4K r----  /home/weber/soft/redis-2.6.16/src/redis-server
08109000     12K rw---  /home/weber/soft/redis-2.6.16/src/redis-server

綜合運用

將用戶colin115下的所有進程名以av_開頭的進程終止

ps -u colin115 |  awk '/av_/ {print "kill -9 " $1}' | sh

將用戶colin115下所有進程名中包含HOST的進程終止

ps -fe| grep colin115|grep HOST |awk '{print $2}' | xargs kill -9;

總結

ps top lsof kill pmap