atop允許使用者通過互動介面即時洞察系統狀態,還能作為後台服務運行,以指定頻率記錄系統與進程的活動快照,並將其儲存為二進位日誌,協助使用者精確回溯並診斷系統問題。
安裝atop
安裝atop。
Alibaba Cloud Linux 3/2、CentOS 7/8、Fedora
# 更新軟體包 sudo yum update -y # 安裝 atop sudo yum install atop -yUbuntu / Debian
# 更新軟體包 sudo apt update -y # 安裝 atop sudo apt install atop -yCentOS Stream 9、Rocky Linux 9
# 更新軟體包 sudo dnf update -y # 安裝 EPEL 源 sudo dnf install epel-release -y # 安裝 atop sudo dnf install atop -yopenSUSE
# 更新軟體包 sudo zypper update -y # 安裝 atop sudo zypper install atop atop-daemon -y啟動 atop 服務。
sudo systemctl start atop驗證atop是否啟動成功。
執行
sudo systemctl status atop查看服務狀態,若回執資訊包含active(running),表示啟動成功。
使用atop查看即時指標
執行
atop [採樣間隔秒數] [採樣次數]命令進入互動模式。# 以預設配置查看(10秒重新整理一次)。 atop # 每5秒查看一次系統指標。 atop 5 # 以10秒為間隔,採集30次系統指標。 atop 10 30 # 以30秒為間隔,採集10次,並結果寫入檔案。 atop 30 10 > /tmp/atop.mem在互動模式下,可使用單個字母鍵切換視圖或者排序。
按鍵
功能
用途
c
顯示完整命令列
查看進程啟動的具體參數。
g
通用視圖(預設)
綜合查看 CPU、記憶體增長、磁碟 I/O。
m/M
記憶體視圖/按記憶體排序
用於分析記憶體使用量、頁錯誤,排查記憶體流失。
d/D
磁碟視圖/按磁碟排序
用於分析磁碟 I/O,定位磁碟讀寫高的進程。
n/N
網路視圖/按網路排序(需安裝並載入netatop核心模組)
用於分析網路流量,定位網路流量大的進程。
a
彙總檢視
將一個程式的所有線程/進程資源消耗彙總在一起。
C
按 CPU 排序
快速定位消耗 CPU 最多的進程。
h
顯示協助
查看更多快速鍵。
q
退出
退出互動模式。
使用atop查看歷史指標
atop服務成功運行後,會定期在/var/log/atop/目錄下產生以atop_YYYYMMDD格式命名的二進位記錄檔。
atop的日誌是二進位檔案,使用cat、less或vim等文字編輯器開啟會顯示亂碼。
讀取歷史日誌
讀取歷史記錄檔。
使用
atop -r <記錄檔>命令載入指定的記錄檔。# 查看當天的日誌,atop會自動尋找當天的記錄檔 atop -r # 查看指定日期的日誌 atop -r /var/log/atop/atop_YYYYMMDD在日誌中跳轉到指定時間點。
載入日誌後,介面顯示的是該記錄檔的第一個時間點快照。
按 t 鍵:向後跳轉到下一個時間點的快照。
按 T 鍵(大寫):向前跳轉到上一個時間點的快照。
按 b 鍵:輸入具體時間(格式 HH:MM),直接跳轉到該時間點。
最佳化 atop 日誌記錄行為
在分析歷史日誌時,若發現預設的日誌記錄頻率(10分鐘一次)對於某些問題來說太過寬泛,或者預設的28天保留時間長度不能滿足監控需求,可通過修改 atop 的設定檔來調整其後台日誌的記錄頻率、保留天數和儲存路徑。
使用
vim或其他文字編輯器開啟設定檔。RHEL 及其衍生版(Alibaba Cloud Linux,CentOS,Fedora,Rocky Linux)。
sudo vim /etc/sysconfig/atopDebian 及其衍生版(Ubuntu, Debian),openSUSE。
sudo vim /etc/default/atop
預設設定檔的內容如下:
LOGOPTS="" LOGINTERVAL=600 LOGGENERATIONS=28 LOGPATH=/var/log/atopLOGOPTS:額外的日誌記錄選項。例如,設定-L可在日誌輪轉時建立一個指向最新日誌的符號連結 /var/log/atop/atop_current,方便快速存取。LOGINTERVAL:日誌記錄的採樣間隔,單位是秒。預設值通常是 600(即10分鐘),表示每10分鐘記錄一次系統快照。LOGGENERATIONS:記錄檔的生命週期,單位是天。預設值通常是 28,表示 atop 會自動刪除28天前的舊記錄檔。LOGPATH:記錄檔儲存路徑,預設為/var/log/atop。如果修改此路徑,請確保新目錄已存在且 atop 進程有寫入許可權。
配置修改後,需重啟atop服務讓配置生效。
sudo systemctl restart atop
產生指標報告
atopsar是atop工具包中的一個非互動命令列工具,用於從atop記錄的二進位記錄檔中提取資料並產生系統效能報告。
使用樣本
查看當前系統在 1 分鐘內(12 次,間隔 5 秒)的CPU使用率指標報告。
atopsar -c 5 12查看當天指定時間段的記憶體指標報告。
# 查看當天18:00至18:01的記憶體指標報告 atopsar -m -b 18:00 -e 18:01查看指定日期內,指定時間段的記憶體指標報告。
# 查看2025年8月15日 18:00至18:01的記憶體指標報告。 atopsar -m -r /var/log/atop/atop_20250815 -b 18:00 -e 18:01
atopsar命令基本文法
atopsar [options] [interval] [count][options]:用於指定報告類型的標誌,例如
-c(CPU),-m(記憶體),-d(磁碟)。[interval]:指定輸出報告的時間間隔,單位為秒。
[count]:指定輸出報告的次數。
指標解讀
系統資源概覽
指標類別 | 指標 | 詳細說明 | 單位 |
ATOP | 主機名稱, 日期 | 顯示當前主機名稱、採樣日期和時間。 | - |
採樣間隔 | 顯示兩次採樣之間的時間間隔。 | 秒 | |
PRC(進程總體情況) |
| 在採樣間隔內,所有進程在核心模式下消耗的CPU總時間。 | 秒 |
| 在採樣間隔內,所有進程在使用者模式下消耗的CPU總時間。 | 秒 | |
| 系統當前的總進程數量。 | 個 | |
| 處於運行中狀態的平均線程數。 | 個 | |
| 處於可中斷睡眠狀態的線程數。 | 個 | |
| 處於不可中斷睡眠狀態的線程數。 | 個 | |
| 殭屍進程的數量。 | 個 | |
| 在採樣間隔內,通過clone系統調用建立的新進程/線程數。 | 個/秒 | |
| 在採樣間隔內,退出的進程數量。 | 個/秒 | |
CPU/cpu(CPU整體/單個CPU核心) |
| CPU在核心模式下花費的時間百分比。 | % |
| CPU在使用者模式下花費的時間百分比。 | % | |
| CPU處理硬體中斷(irq)和軟體中斷(softirq)的時間百分比。 | % | |
| CPU處於完全空閑狀態的時間百分比。 | % | |
| CPU因等待磁碟I/O完成而處於空閑狀態的時間百分比。 | % | |
| 虛擬CPU等待物理CPU時間的百分比(被宿主機或其他虛擬機器佔用的時間)。 | % | |
| 運行虛擬機器所花費的CPU時間的百分比。 | % | |
| CPU的平均運行頻率,相對於其最大頻率的百分比。 | % | |
CPL(CPU負載) |
| 過去1分鐘/5分鐘/15分鐘的系統平均負載。 | - |
| 在採樣間隔內,環境切換的次數。 | 次/秒 | |
| 在採樣間隔內,發生的中斷總次數。 | 次/秒 | |
MEM(實體記憶體) |
| 系統實體記憶體總量。 | GiB/MiB |
| 完全未被使用的空閑記憶體量。 | GiB/MiB | |
| 用作頁面緩衝的記憶體量,用於快取檔案資料。 | GiB/MiB | |
| 在頁面緩衝中,已被修改但尚未寫回磁碟的髒頁大小。 | MiB | |
| 用作緩衝區快取的記憶體量,用於緩衝塊裝置中繼資料。 | MiB | |
| 核心用於自身資料結構(slab分配器)的記憶體量。 | MiB | |
| 共用記憶體(包括tmpfs)的大小。 | MiB | |
| (僅限32位系統)用於虛擬記憶體地區的平衡記憶體量。 | MiB | |
SWP(交換分區) |
| 交換分區的總大小。 | GiB/MiB |
| 閒置交換分區大小。 | GiB/MiB | |
| 已被換出但同時又被緩衝的記憶體大小。 | MiB | |
| 已被應用程式申請的虛擬記憶體總量。 | GiB/MiB | |
| 允許申請的虛擬記憶體上限。 | GiB/MiB | |
PAG(分頁活動) |
| 核心在採樣間隔內為回收記憶體而掃描的頁數。 | 頁/秒 |
| 核心在掃描後成功回收的頁數。 | 頁/秒 | |
| 核心因記憶體不足而停滯以等待頁面回收的次數。 | 次/秒 | |
| 從交換分區換入到實體記憶體的頁面數。 | 頁/秒 | |
| 從實體記憶體換出到交換分區的頁面數。 | 頁/秒 | |
DSK(磁碟) LVM(邏輯卷) |
| 磁碟繁忙的時間百分比。達到100%表示磁碟飽和。 | % |
| 在採樣間隔內,完成的讀/寫請求數量。 | 個/秒 | |
| 每個讀/寫請求的平均資料大小。 | KB | |
| 每個讀/寫請求的平均耗時(包括排隊和服務時間)。 | 毫秒 | |
| 平均I/O請求的服務時間(不含排隊時間)。 | 毫秒 | |
NET(網路) |
| TCP和UDP層的收發包統計。 | 包/秒 |
| IP層的收發包、轉寄包統計。 | 包/秒 | |
| 顯示每個網路介面的活動情況。 | - | |
| 介面接收/發送的資料包數量。 | 包/秒 | |
| 介面接收/發送的速率。 | Mbps | |
| 介面接收/發送時發生的錯誤數。 | 個/秒 | |
| 介面接收/發送時丟棄的資料包數。 | 個/秒 |
進程級詳情
視圖 | 指標 | 詳細說明 | 單位 |
通用視圖(預設) |
| 進程ID。系統的唯一進程標識符。 | - |
| 進程狀態。R-運行中, S-可中斷睡眠, D-不可中斷睡眠, Z-殭屍, E-已退出。 | - | |
| CPU使用率。 | % | |
| 記憶體使用量率。 | % | |
| 線程數。 | 個 | |
| 主要缺頁錯誤。表示進程需要從磁碟讀取資料到記憶體的次數,是衡量磁碟I/O壓力的一個指標。 | 次/秒 | |
| 命令名。進程的可執行檔名。按 c 鍵後會顯示完整命令列。 | - | |
記憶體視圖 |
| 虛擬記憶體大小。進程向系統申請的虛擬位址空間總大小。 | KiB/MiB/GiB |
| 常駐記憶體大小。進程當前實際佔用實體記憶體的大小。 | KiB/MiB/GiB | |
| 共用記憶體大小。 | KiB/MiB/GiB | |
| 常駐記憶體增長量。正數表示記憶體消耗在增加,負數表示在減少。 | KiB | |
| 虛擬記憶體增長量。 | KiB | |
磁碟視圖 |
| 磁碟活動百分比。進程產生的磁碟I/O繁忙時間佔總磁碟繁忙時間的百分比。 | % |
| 讀取/寫入的磁碟資料。 | KiB/MB | |
| 取消的寫入量。進程寫入頁面緩衝後,在資料被同步到磁碟前又被刪除的資料量。 | KiB/MB | |
網路視圖 |
| 網路活動百分比。進程產生的網路流量占所有進程總流量的百分比。 | % |
| TCP發送/接收量。 | KiB/MB | |
| UDP發送/接收量。 | KiB/MB |
應用於生產環境
磁碟空間規劃:
atop日誌大小與採集頻率、系統進程數和保留天數正相關。通過ls -lh /var/log/atop/命令觀察單個記錄檔的大小,然後乘以LOGGENERATIONS的值來估算總空間需求。監控間隔:對於需要更細粒度分析的情境,可將預設配置
LOGINTERVAL調整為30秒。但請注意,縮短間隔會增加磁碟 I/O 和 atop 進程的 CPU 開銷,請根據執行個體負載合理配置。
常見問題
執行
atop -r時提示stat raw file: No such file or directory,是什麼原因?這個錯誤表示atop找不到指定日期的記錄檔。可能的原因有:
指定的日期
atop服務並未運行。記錄檔因輪轉策略已被刪除(超過了
LOGGENERATIONS設定的保留數量)。查詢的是未來的日期。
請檢查
/var/log/atop目錄下實際存在的記錄檔列表。
如何減少
atop佔用的磁碟空間?可通過修改配置減少磁碟空間佔用,修改配置後,需重啟
atop服務:減少日誌保留天數:在設定檔中調低
LOGGENERATIONS的值,例如從28改為14。降低採集頻率:在設定檔中調高
LOGINTERVAL的值,例如從600改為1200。
為什麼在
atop互動介面按n鍵看不到按進程統計的網路流量?atop預設不包含按進程統計網路流量的功能。要啟用此功能,需要額外安裝並載入
netatop核心模組。安裝核心開發包及編譯所需軟體環境。
sudo yum install -y kernel-devel dkms elfutils-libelf-devel下載netatop源碼至指定目錄。
cd /usr/src/ && sudo wget https://www.atoptool.nl/download/netatop-3.2.2.tar.gz解壓源碼並進入源碼目錄。
sudo tar -zxvf netatop-3.2.2.tar.gz && cd netatop-3.2.2基於源碼構建並安裝模組和精靈。
sudo make && sudo make install啟動
netatop服務。sudo systemctl start netatop驗證
netatop是否安裝成功。執行
atop進入互動操作介面,按n鍵查看,若進程詳情列表中包含NET列,表示安裝成功。

