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

top linux下的任務(wù)管理器

top命令是Linux下常用的性能分析工具,能夠?qū)崟r(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況,類(lèi)似于Windows的任務(wù)管理器。top是一個(gè)動(dòng)態(tài)顯示過(guò)程,即可以通過(guò)用戶按鍵來(lái)不斷刷新當(dāng)前狀態(tài).如果在前臺(tái)執(zhí)行該命令,它將獨(dú)占前臺(tái),直到用戶終止該程序?yàn)橹?比較準(zhǔn)確的說(shuō),top命令提供了實(shí)時(shí)的對(duì)系統(tǒng)處理器的狀態(tài)監(jiān)視.它將顯示系統(tǒng)中CPU最“敏感”的任務(wù)列表.該命令可以按CPU使用.內(nèi)存使用和執(zhí)行時(shí)間對(duì)任務(wù)進(jìn)行排序;而且該命令的很多特性都可以通過(guò)交互式命令或者在個(gè)人定制文件中進(jìn)行設(shè)定。

$top
top - 09:14:56 up 264 days, 20:56,  1 user,  load average: 0.02, 0.04, 0.00
Tasks:  87 total,   1 running,  86 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.2%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.2%st
Mem:    377672k total,   322332k used,    55340k free,    32592k buffers
Swap:   397308k total,    67192k used,   330116k free,    71900k cached
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
1 root      20   0  2856  656  388 S  0.0  0.2   0:49.40 init
2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd
3 root      20   0     0    0    0 S  0.0  0.0   7:15.20 ksoftirqd/0
4 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
  • 第一行

    • 09:14:56 : 系統(tǒng)當(dāng)前時(shí)間
    • 264 days, 20:56 : 系統(tǒng)開(kāi)機(jī)到現(xiàn)在經(jīng)過(guò)了多少時(shí)間
    • 1 users : 當(dāng)前2用戶在線
    • load average: 0.02, 0.04, 0.00: 系統(tǒng)1分鐘、5分鐘、15分鐘的CPU負(fù)載信息
  • 第二行

    • Tasks:任務(wù);
    • 87 total:很好理解,就是當(dāng)前有87個(gè)任務(wù),也就是87個(gè)進(jìn)程。
    • 1 running:1個(gè)進(jìn)程正在運(yùn)行
    • 86 sleeping:86個(gè)進(jìn)程睡眠
    • 0 stopped:停止的進(jìn)程數(shù)
    • 0 zombie:僵死的進(jìn)程數(shù)
  • 第三行

    • Cpu(s):表示這一行顯示CPU總體信息
    • 0.0%us:用戶態(tài)進(jìn)程占用CPU時(shí)間百分比,不包含renice值為負(fù)的任務(wù)占用的CPU的時(shí)間。
    • 0.7%sy:內(nèi)核占用CPU時(shí)間百分比
    • 0.0%ni:改變過(guò)優(yōu)先級(jí)的進(jìn)程占用CPU的百分比
    • 99.3%id:空閑CPU時(shí)間百分比
    • 0.0%wa:等待I/O的CPU時(shí)間百分比
    • 0.0%hi:CPU硬中斷時(shí)間百分比
    • 0.0%si:CPU軟中斷時(shí)間百分比
    • 注:這里顯示數(shù)據(jù)是所有cpu的平均值,如果想看每一個(gè)cpu的處理情況,按1即可;折疊,再次按1;
  • 第四行

    • Men:內(nèi)存的意思
    • 8175320kk total:物理內(nèi)存總量
    • 8058868k used:使用的物理內(nèi)存量
    • 116452k free:空閑的物理內(nèi)存量
    • 283084k buffers:用作內(nèi)核緩存的物理內(nèi)存量
  • 第五行

    • Swap:交換空間
    • 6881272k total:交換區(qū)總量
    • 4010444k used:使用的交換區(qū)量
    • 2870828k free:空閑的交換區(qū)量
    • 4336992k cached:緩沖交換區(qū)總量
  • 進(jìn)程信息
    • 再下面就是進(jìn)程信息:
    • PID:進(jìn)程的ID
    • USER:進(jìn)程所有者
    • PR:進(jìn)程的優(yōu)先級(jí)別,越小越優(yōu)先被執(zhí)行
    • NInice:值
    • VIRT:進(jìn)程占用的虛擬內(nèi)存
    • RES:進(jìn)程占用的物理內(nèi)存
    • SHR:進(jìn)程使用的共享內(nèi)存
    • S:進(jìn)程的狀態(tài)。S表示休眠,R表示正在運(yùn)行,Z表示僵死狀態(tài),N表示該進(jìn)程優(yōu)先值為負(fù)數(shù)
    • %CPU:進(jìn)程占用CPU的使用率
    • %MEM:進(jìn)程使用的物理內(nèi)存和總內(nèi)存的百分比
    • TIME+:該進(jìn)程啟動(dòng)后占用的總的CPU時(shí)間,即占用CPU使用時(shí)間的累加值。
    • COMMAND:進(jìn)程啟動(dòng)命令名稱

top命令交互操作指令

下面列出一些常用的 top命令操作指令

  • q:退出top命令
  • :立即刷新
  • s:設(shè)置刷新時(shí)間間隔
  • c:顯示命令完全模式
  • t::顯示或隱藏進(jìn)程和CPU狀態(tài)信息
  • m:顯示或隱藏內(nèi)存狀態(tài)信息
  • l:顯示或隱藏uptime信息
  • f:增加或減少進(jìn)程顯示標(biāo)志
  • S:累計(jì)模式,會(huì)把已完成或退出的子進(jìn)程占用的CPU時(shí)間累計(jì)到父進(jìn)程的MITE+
  • P:按%CPU使用率排行
  • T:按MITE+排行
  • M:按%MEM排行
  • u:指定顯示用戶進(jìn)程
  • r:修改進(jìn)程renice值
  • kkill:進(jìn)程
  • i:只顯示正在運(yùn)行的進(jìn)程
  • W:保存對(duì)top的設(shè)置到文件^/.toprc,下次啟動(dòng)將自動(dòng)調(diào)用toprc文件的設(shè)置。
  • h:幫助命令。
  • q:退出

注:強(qiáng)調(diào)一下,使用頻率最高的是P、T、M,因?yàn)橥ǔJ褂胻op,我們就想看看是哪些進(jìn)程最耗cpu資源、占用的內(nèi)存最多; 注:通過(guò)”shift + >”或”shift + <”可以向右或左改變排序列 如果只需要查看內(nèi)存:可用free命令。只查看uptime信息(第一行),可用uptime命令;

實(shí)例

實(shí)例1:多核CPU監(jiān)控

在top基本視圖中,按鍵盤(pán)數(shù)字“1”,可監(jiān)控每個(gè)邏輯CPU的狀況;

[rdtfr@bl685cb4-t ^]$ top
top - 09:10:44 up 20 days, 16:51,  4 users,  load average: 3.82, 4.40, 4.40
Tasks: 1201 total,  10 running, 1189 sleeping,   0 stopped,   2 zombie
Cpu0  :  1.3%us,  2.3%sy,  0.0%ni, 96.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  1.3%us,  2.6%sy,  0.0%ni, 96.1%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  1.0%us,  2.0%sy,  0.0%ni, 92.5%id,  0.0%wa,  0.0%hi,  4.6%si,  0.0%st
Cpu3  :  3.9%us,  7.8%sy,  0.0%ni, 83.2%id,  0.0%wa,  0.0%hi,  5.2%si,  0.0%st
Cpu4  :  4.2%us, 10.4%sy,  0.0%ni, 63.8%id,  0.0%wa,  0.0%hi, 21.5%si,  0.0%st
Cpu5  :  6.8%us, 12.7%sy,  0.0%ni, 80.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu6  :  2.9%us,  7.2%sy,  0.0%ni, 85.3%id,  0.0%wa,  0.0%hi,  4.6%si,  0.0%st
Cpu7  :  6.2%us, 13.0%sy,  0.0%ni, 75.3%id,  0.0%wa,  0.0%hi,  5.5%si,  0.0%st
Mem:  32943888k total, 32834216k used,   109672k free,   642704k buffers
Swap: 35651576k total,  5761928k used, 29889648k free, 16611500k cached

實(shí)例2:高亮顯示當(dāng)前運(yùn)行進(jìn)程

在top基本視圖中,按鍵盤(pán)“b”(打開(kāi)/關(guān)閉加亮效果);

實(shí)例3:顯示完整的程序命令

命令:top -c

[rdtfr@bl685cb4-t ^]$ top -c
top - 09:14:35 up 20 days, 16:55,  4 users,  load average: 5.77, 5.01, 4.64
Tasks: 1200 total,   5 running, 1192 sleeping,   0 stopped,   3 zombie
Cpu(s):  4.4%us,  6.0%sy,  0.0%ni, 83.8%id,  0.2%wa,  0.0%hi,  5.5%si,  0.0%st
Mem:  32943888k total, 32842896k used,   100992k free,   591484k buffers
Swap: 35651576k total,  5761808k used, 29889768k free, 16918824k cached
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
2013 apache    18   0  403m  88m 5304 S 25.0  0.3   6:37.44 /usr/sbin/httpd
18335 pubtest   22   0 65576  996  728 R  7.8  0.0   0:00.24 netstat -naltp
16499 rdtfare   15   0 13672 2080  824 R  2.6  0.0   0:00.38 top -c
29684 rdtfare   15   0 1164m 837m  14m S  2.3  2.6 148:47.54 ./autodata data1.txt
12976 pubtest   18   0  238m 9000 1932 S  1.6  0.0 439:28.44 tscagent -s TOEV_P

實(shí)例4:顯示指定的進(jìn)程信息

命令:top -p pidid

/opt/app/tdv1/config#top -p 17265
top - 09:17:34 up 455 days, 17:55,  2 users,  load average: 3.76, 4.56, 4.46
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
Cpu(s):  7.8%us,  1.9%sy,  0.0%ni, 89.2%id,  0.0%wa,  0.1%hi,  1.0%si,  0.0%st
Mem:   8175452k total,  8103988k used,    71464k free,   268716k buffers
Swap:  6881272k total,  4275424k used,  2605848k free,  6338184k cached
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
17265 tdv1      15   0 56504  828  632 S  0.0  0.0 195:53.25 redis-server

指定進(jìn)程信息有多個(gè)時(shí),需要結(jié)合其它工具將回車(chē)替換為,(-p 支持pid,pid,pid語(yǔ)法)

命令:top -p pgrep MULTI_PROCESS | tr "\\n" "," | sed 's/,$//'

/opt/app/tdv1$top -p `pgrep java | tr "\\n" "," | sed 's/,$//'`
top - 14:05:31 up 53 days,  2:43,  9 users,  load average: 0.29, 0.34, 0.22
Tasks:   3 total,   0 running,   3 sleeping,   0 stopped,   0 zombie
Cpu(s):  5.9%us,  8.2%sy,  0.0%ni, 86.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  66082088k total, 29512860k used, 36569228k free,   756352k buffers
Swap: 32767992k total,  1019900k used, 31748092k free, 15710284k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                          27855 rdtfare   20   0 4454m 1.3g 5300 S  0.7  2.0 338:31.37 java                         
 2034 jenkins   20   0 18.3g 5.2g 5284 S  0.3  8.2  56:02.38 java                                             12156 rdtfare   20   0 4196m 1.2g  12m S  0.3  2.0  86:34.62 java  

更強(qiáng)大的工具

htop

htop 是一個(gè) Linux 下的交互式的進(jìn)程瀏覽器,可以用來(lái)替換Linux下的top命令。

與Linux傳統(tǒng)的top相比,htop更加人性化。它可讓用戶交互式操作,支持顏色主題,可橫向或縱向滾動(dòng)瀏覽進(jìn)程列表,并支持鼠標(biāo)操作。

與top相比,htop有以下優(yōu)點(diǎn):

  • 可以橫向或縱向滾動(dòng)瀏覽進(jìn)程列表,以便看到所有的進(jìn)程和完整的命令行。
  • 在啟動(dòng)上,比top 更快。
  • 殺進(jìn)程時(shí)不需要輸入進(jìn)程號(hào)。
  • htop 支持鼠標(biāo)操作。