首頁 > 軟體

top命令:Linux下的工作管理員

2020-06-16 17:46:52

top命令是Linux下常用的效能分析工具,能夠實時顯示系統中各個進程的資源佔用狀況,類似於Windows的工作管理員。top是一個動態顯示過程,即可以通過使用者按鍵來不斷重新整理當前狀態.如果在前台執行該命令,它將獨占前台,直到使用者終止該程式為止.比較準確的說,top命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最“敏感”的任務列表.該命令可以按CPU使用.記憶體使用和執行時間對任務進行排序;而且該命令的很多特性都可以通過互動式命令或者在個人客製化檔案中進行設定。

$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 : 系統當前時間
    • 264 days, 20:56 : 系統開機到現在經過了多少時間
    • 1 users : 當前2使用者線上
    • load average: 0.02, 0.04, 0.00: 系統1分鐘、5分鐘、15分鐘的CPU負載資訊
  • 第二行
    • Tasks:任務;
    • 87 total:很好理解,就是當前有87個任務,也就是87個進程。
    • 1 running:1個進程正在執行
    • 86 sleeping:86個進程睡眠
    • 0 stopped:停止的進程數
    • 0 zombie:僵死的進程數
  • 第三行
    • Cpu(s):表示這一行顯示CPU總體資訊
    • 0.0%us:使用者態進程佔用CPU時間百分比,不包含renice值為負的任務占用的CPU的時間。
    • 0.7%sy:核心佔用CPU時間百分比
    • 0.0%ni:改變過優先順序的進程佔用CPU的百分比
    • 99.3%id:空閒CPU時間百分比
    • 0.0%wa:等待I/O的CPU時間百分比
    • 0.0%hi:CPU硬中斷時間百分比
    • 0.0%si:CPU軟中斷時間百分比
    • 註:這裡顯示資料是所有cpu的平均值,如果想看每一個cpu的處理情況,按1即可;折疊,再次按1;
  • 第四行
    • Men:記憶體的意思
    • 8175320kk total:實體記憶體總量
    • 8058868k used:使用的實體記憶體量
    • 116452k free:空閒的實體記憶體量
    • 283084k buffers:用作核心快取的實體記憶體量
  • 第五行
    • Swap:交換空間
    • 6881272k total:交換區總量
    • 4010444k used:使用的交換區量
    • 2870828k free:空閒的交換區量
    • 4336992k cached:緩衝交換區總量
  • 進程資訊
    • 再下面就是進程資訊:
    • PID:進程的ID
    • USER:進程所有者
    • PR:進程的優先順序別,越小越優先被執行
    • NInice:值
    • VIRT:進程佔用的虛擬記憶體
    • RES:進程佔用的實體記憶體
    • SHR:進程使用的共用記憶體
    • S:進程的狀態。S表示休眠,R表示正在執行,Z表示僵死狀態,N表示該進程優先值為負數
    • %CPU:進程佔用CPU的使用率
    • %MEM:進程使用的實體記憶體和總記憶體的百分比
    • TIME+:該進程啟動後占用的總的CPU時間,即佔用CPU使用時間的累加值。
    • COMMAND:進程啟動命令名稱

8.1. top命令互動操作指令

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

  • q:退出top命令
  • <Space>:立即重新整理
  • s:設定重新整理時間間隔
  • c:顯示命令完全模式
  • t::顯示或隱藏進程和CPU狀態資訊
  • m:顯示或隱藏記憶體狀態資訊
  • l:顯示或隱藏uptime資訊
  • f:增加或減少進程顯示標誌
  • S:累計模式,會把已完成或退出的子進程佔用的CPU時間累計到父進程的MITE+
  • P:按%CPU使用率排行
  • T:按MITE+排行
  • M:按%MEM排行
  • u:指定顯示使用者進程
  • r:修改進程renice值
  • kkill:進程
  • i:只顯示正在執行的進程
  • W:儲存對top的設定到檔案^/.toprc,下次啟動將自動呼叫toprc檔案的設定。
  • h:幫助命令。
  • q:退出

註:強調一下,使用頻率最高的是P、T、M,因為通常使用top,我們就想看看是哪些進程最耗cpu資源、占用的記憶體最多; 註:通過”shift + >”或”shift + <”可以向右或左改變排序列 如果只需要檢視記憶體:可用free命令。只檢視uptime資訊(第一行),可用uptime命令;

8.2. 範例

範例1:多核CPU監控

在top基本檢視中,按鍵盤數位“1”,可監控每個邏輯CPU的狀況;

[linux@linuxidc^]$ 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

範例2:高亮顯示當前執行進程¶

在top基本檢視中,按鍵盤“b”(開啟/關閉加亮效果);

範例3:顯示完整的程式命令¶

命令:top -c

[linux@linuxidc^]$ 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

範例4:顯示指定的進程資訊

命令: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

指定進程資訊有多個時,需要結合其它工具將回車替換為,(-p 支援pid,pid,pid語法)

命令: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

8.3. 更強大的工具

htop

htop 是一個 Linux 下的互動式的進程瀏覽器,可以用來替換Linux下的top命令。

與Linux傳統的top相比,htop更加人性化。它可讓使用者互動式操作,支援顏色主題,可橫向或縱向捲動瀏覽進程列表,並支援滑鼠操作。

與top相比,htop有以下優點:

  • 可以橫向或縱向捲動瀏覽進程列表,以便看到所有的進程和完整的命令列。
  • 在啟動上,比top 更快。
  • 殺進程時不需要輸入進程號。
  • htop 支援滑鼠操作。

Linux下top命令詳解 http://www.linuxidc.com/Linux/2015-04/116101.htm

Linux top 命令入門知識  http://www.linuxidc.com/Linux/2015-02/114109p2.htm

Linux 系統監控、診斷工具之 top命令詳解  http://www.linuxidc.com/Linux/2014-12/110563.htm

top命令引起系統負載升高  http://www.linuxidc.com/Linux/2014-11/109997.htm

實用的top命令 http://www.linuxidc.com/Linux/2014-11/109769.htm

為什麼 Linux 的 htop 命令完勝 top 命令 http://www.linuxidc.com/Linux/2014-06/102626.htm

Ubuntu下最強大的進程監視器htop使用 http://www.linuxidc.com/Linux/2013-05/85030.htm

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-01/127545.htm


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