七 款可替代 top 命令的工具!
本文轉載自微信公眾號「杰哥的IT之旅」,作者JackTian。轉載本文請聯系杰哥的IT之旅公眾號。
大家好,我是杰哥。
上一篇文章中給大家介紹了《11 款可替代 top 命令的工具!》,今天我再來給大家推薦 7 款可替代 top 命令的工具,看完這兩篇替代品的文章相信能讓你對 Linux 操作系統下一個小小的命令大開眼界。
一、atop
atop[1]是基于 C 語言編寫的一款適用于 Linux 操作系統的 ASCII 全屏性能監視器,它可以將所有的進程(即使進程在間隔期間已完成的),系統和進程活動的每日日志記錄以進行長期分析,通過突出顯示過載的系統資源使用顏色等。
同時,它還會定期顯示與 CPU、內存、交換、磁盤(包括 LVM)和網絡層相關的系統級活動,并且對于每個進程和線程,例如:CPU 利用率、內存增長、磁盤利用率、優先級、用戶名、狀態和退出代碼。
除此之外,atop 還可結合內核模塊 netatop,可顯示每個進程和線程的網絡活動。
安裝 atop:
# apt install atop
下載 netatop 源碼包并解壓,需要以 root 身份進行執行以下步驟安裝 netatop 內核模塊和 netatopd 守護程序。
# curl -LO https://www.atoptool.nl/download/netatop-3.1.tar.gz
# tar -zxf netatop-3.1.tar.gz
# apt install zlib1g-dev
# cd netatop-3.1
# make
# make install
加載模塊并啟動守護進程:
# systemctl start netatop
加載模塊并在啟動后自動啟動守護進程:
# systemctl enable netatop
二、ctop
ctop[2]是基于 Go 語言編寫的一款為提供對多個容器的實時指標的展示,使用 ctop 可以快速查看容器 CPU、Memory、Network、IO 等指標的實時情況。
# sudo wget https://github.com/bcicen/ctop/releases/download/0.7.6/ctop-0.7.6-linux-amd64 -O /usr/local/bin/ctop
# sudo chmod +x /usr/local/bin/ctop
安裝完畢后,若執行ctop命令提示彈窗dial unix /var/run/docker.sock報錯的話,原因是沒有這個 docker 文件,則需要使用官方安裝腳本自動安裝,可執行:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun來進行安裝 docker,安裝完 docker 后,可以在 /var/run/ 目錄下檢查下 docker.sock 文件是否已經存在,則可以執行 ctop。
2.1 ctop 參數選項
- -a:只顯示活動的容器
- -f:設置初始過濾字符串
- -h:顯示幫助對話框
- -i:反轉默認顏色
- -r:反向容器排序順序
- -s:選擇容器排序字段
- -v:輸出版本信息并退出
三、iftop
iftop[3]是對網絡使用的作用與 top 對 CPU 使用的作用相同,它可以偵聽命名接口上的網絡流量,并按主機對顯示當前帶寬使用情況表。
# apt install iftop
3.1 iftop 參數選項
- -h:顯示幫助信息
- -n:不做主機名查詢
- -N:不將端口號轉換為服務
- -p:在復雜模式下運行(顯示同一網段的其他主機之間的流量)
- -b:不顯示條形圖
- -B:以字節為單位顯示帶寬
- -i interface:指定監聽接口
- -f filter code:使用過濾碼選擇要計數的數據包(默認不計算,但只計算 IP 報文)
- -F net/mask:顯示輸入 / 輸出 IPv4 網絡流量
- -G net6/mask6:顯示輸入 / 輸出 IPv6 網絡流量
- -l:display 和 count link-local IPv6 流量(默認為:off)
- -P:顯示端口和主機
- -m limit:設置帶寬上限
- -c config file:指定一個替代的配置文件
- -t:使用不帶 ncurses 的文本接口
四、iotop
iotop[4]是可以識別在您的機器上使用大量輸入 / 輸出請求的進程,類似于 top 的實用程序,但不是向您顯示最消耗 CPU 的內容信息,而是按進程的 IO 使用情況列出相關進程。
受到 Guillaume Chazarain 的 iotop Python 腳本的啟發,由 Vyacheslav Trushkin 用 C 重寫并由 Boian Bonev 改進,完全無需 Python 即可運行。
iotop 可以在 Debian、Ubuntu、Fedora、CentOS 7/8、RHEL 7/8、其他 Linux 發行版的操作系統上運行。
# apt install iotop
4.1 iotop 參數選項
- --version:顯示程序的版本號并退出
- -h, --help:顯示幫助信息并退出
- -o, --only:僅顯示實際執行 I/O 操作的進程或線程
- -b, --batch:非交互式模式
- -n NUM, --iter=NUM:結束前的迭代次數 [無限]
- -d SEC, --delay=SEC:迭代間隔時間 [1秒]
- -p PID, --pid=PID:監視的進程 / 線程 [全部]
- -u USER, --user=USER:監控的用戶 [全部]
- -P, --processes:只顯示進程,而不是所有線程
- -a, --accumulated:顯示累計 I/O,而不是帶寬
- -k, --kilobytes:使用千字節為單位
- -t, --time:在每行上添加一個時間戳
- -q, --quiet:禁止一些標題行
- --no-help:禁止列出快捷方式
4.2 iotop 熱鍵
- any:任何其他鍵強制刷新
- q:退出
- i:改變 I/O 優先級
- o:僅顯示活躍的進程
- r:反轉排序順序
- 方向左右鍵:改變排序列
五、nmon
nmon[5]是用于 AIX 和 Linux 操作系統的計算機性能系統監控工具,以交互的方式精簡格式在終端上每兩秒更新一次的頻率顯示本地系統統計信息(CPU、內存、網絡、磁盤、文件系統、NFS、進程、資源等),以記錄方式將統計數據保存到逗號分隔的 (CSV) 數據文件中,以供繪圖和分析幫助理解計算機資源使用、調整選項以及相關瓶頸。
如果您在運行 nmon 時指定-F、-f、-X、-x和-Z參數選項中的任何一個,則 nmon 將處于記錄模式,若不添加任何參數選項 nmon 將處于交互模式。
# apt install nmon
更多幫助信息可執行nmon -h查看 nmon 的幫助手冊。
六、slabtop
slabtop[6]是以實時的方式顯示內核“slab”緩沖區的細節信息。
用法:
slabtop [選項]
選項:
- -d n--delay=n:每 n 秒更新一次顯示的信息,默認是每 3 秒
- -o --once:顯示一次后退出
- -s S --sort=S:指定排序標準(如下)進行排序
- -h--help:顯示幫助信息
- -V--version:顯示程序版本
排序標準:
- a:按活動對象的數量排序
- b:按每個 slab 的對象排序
- c:按緩存大小排序
- l:按 slabs 排序
- v:按活躍 slabs 數量排序
- n:按名稱排序
- o:按對象數量排序
- p:按每個 slab 的頁數排序
- s:按對象大小排序
- u:按緩存利用率排序
顯示內核 slab 緩存區信息:
Active / Total Objects (% used) : 567933 / 601056 (94.5%)
Active / Total Slabs (% used) : 22815 / 22815 (100.0%)
Active / Total Caches (% used) : 106 / 175 (60.6%)
Active / Total Size (% used) : 160092.21K / 167455.54K (95.6%)
Minimum / Average / Maximum Object : 0.01K / 0.28K / 8.00K
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
74382 70996 95% 0.19K 3542 21 14168K dentry
70005 60472 86% 0.10K 1795 39 7180K buffer_head
55648 55324 99% 0.50K 3478 16 27824K kmalloc-512
53376 53376 100% 0.12K 1668 32 6672K kernfs_node_cache
40192 39937 99% 0.03K 314 128 1256K kmalloc-32
36231 35951 99% 0.59K 2787 13 22296K inode_cache
34880 34617 99% 0.20K 1744 20 6976K vm_area_struct
21951 21711 98% 1.15K 813 27 26016K ext4_inode_cache
18368 15434 84% 0.06K 287 64 1148K anon_vma_chain
16170 13296 82% 0.57K 1155 14 9240K radix_tree_node
15360 15360 100% 0.02K 60 256 240K kmalloc-16
14848 14848 100% 0.01K 29 512 116K kmalloc-8
10944 10944 100% 0.06K 171 64 684K kmalloc-64
10540 8896 84% 0.02K 62 170 248K lsm_file_cache
10396 8866 85% 0.09K 226 46 904K anon_vma
9984 6569 65% 0.06K 156 64 624K vmap_area
9520 9520 100% 0.05K 112 85 448K ftrace_event_field
9184 7952 86% 0.25K 574 16 2296K filp
8580 8455 98% 0.66K 715 12 5720K proc_inode_cache
7956 7755 97% 0.04K 78 102 312K ext4_extent_status
7014 6173 88% 0.19K 334 21 1336K kmalloc-192
6720 6720 100% 0.07K 120 56 480K Acpi-Operand
5696 5436 95% 0.12K 178 32 712K kmalloc-128
4324 4324 100% 0.09K 94 46
七、virt-top
virt-top[7]是一個類似于 top 的實用程序,主要用于在 Linux 操作系統中顯示虛擬化域的統計信息以及 CPU、內存、虛擬磁盤、虛擬網絡、虛擬機管理程序等,它需要使用 libvirt 才能夠顯示不同虛擬化系統的統計信息。
virt-top 支持在 CentOS、RHEL、Debian、Ubuntu、Fedora、OpenSUSE 等操作系統上進行安裝。
CentOS、RHEL 上安裝 Virt-top:
# yum install virt-top
Debian、Ubuntu 上安裝 Virt-top:
# apt install virt-top
Fedora 上安裝 Virt-top:
# dnf install virt-top
OpenSUSE 上安裝 Virt-top:
# zypper install virt-top
更多 virt-top 參數選項的運用可參考 virt-top man 手冊。
References
[1] atop:https://www.atoptool.nl/index.php
[2] ctop:https://github.com/bcicen/ctop
[3] iftop:http://www.ex-parrot.com/~pdw/iftop/
[4] iotop:https://github.com/Tomas-M/iotop
[5] nmon:http://nmon.sourceforge.net/pmwiki.php
nmon:https://en.wikipedia.org/wiki/Nmon
nmon:https://www.ibm.com/docs/en/aix/7.1?topic=n-nmon-command
[6] slabtop:https://wangchujiang.com/linux-command/c/slabtop.html
[7] virt-top:https://linux.die.net/man/1/virt-top
virt-top:https://www.mankier.com/1/virt-top
virt-top:https://ostechnix.com/display-virtualization-systems-stats-with-virt-top-in-linux/
libvirt:https://libvirt.org/