本文主要探讨了一系列用于监控和分析系统 CPU 性能的工具,包括 top
、uptime
、vmstat
、mpstat
、sar
、pidstat
、ps
、dstat
、perf
、tcpdump
和 lscpu
。这些工具在系统管理和性能优化中起着关键的作用。通过实时监测进程、系统负载、虚拟内存、CPU 使用情况以及网络数据包,管理员可以全面了解系统资源的分布和使用情况,迅速发现和解决性能瓶颈,提高系统的运行效率和稳定性。文章将深入介绍每个工具的使用方法和功能,以帮助读者更好地理解和利用这些工具进行系统性能分析和优化。
平均负载(uptime、top)
top
命令是一个实时的系统资源监视器,用于查看系统中正在运行的进程的信息。以下是 top
命令的详细使用方法:
1. 基本格式:
top
2. 常用选项:
-
-c
: 显示完整的命令行。 -
-d
: 指定刷新时间,单位为秒。 -
-u
: 指定要显示的用户。 -
-p
: 指定要监视的进程。 -
-h
: 显示帮助信息。 -
q
: 退出top
。
3. top
窗口主要区域:
- 第一行: 系统概览,包括系统时间、运行时间、登录用户数、负载平均值等等。
- 第二行: 进程总数、运行中的进程数、睡眠中的进程数、停止的进程数等。
- 第三行: CPU 使用情况,包括用户空间、系统空间、空闲等百分比。
- 第四行: 内存使用情况,包括总内存、已使用、空闲、缓冲区等。
- 进程列表: 列出了当前运行的进程,包括进程 ID、用户、CPU 使用率、内存使用率、进程状态、启动时间等。
4. 操作:
-
k
: 结束一个进程,输入进程的 PID,按 Enter。 -
r
: 重新调整进程的优先级,输入进程的 PID,按 Enter,然后输入新的优先级值。 -
Space
: 切换排序方式,可以按照 CPU 使用率、内存使用率等排序。
5. 示例:
- 基本使用:
top
- 指定刷新时间为2秒:
top -d 2
- 显示完整的命令行:
top -c
- 指定要显示的用户:
top -u username
- 指定要监视的进程:
top -p pid
6. 注意事项:
-
top
默认按 CPU 使用率降序排序进程。按Shift + M
键可以切换到按内存使用率排序。 -
top
是一个实时监控工具,通过不断更新显示当前系统状态。 - 可以通过
man top
查看top
的手册页,了解更多选项和用法。
top
提供了丰富的信息,可以通过键盘快捷键进行交互,方便用户实时监视系统状态。
uptime
命令用于显示系统的当前运行时间、平均负载以及当前登录用户数。以下是 uptime
命令的详细使用方法:
- 基本用法:
uptime
这将显示系统的当前运行时间、平均负载以及当前登录用户数。
- 显示详细信息:
uptime -p
这将显示更详细的系统运行时间,包括天数、小时、分钟。
- 定时刷新显示:
watch uptime
这将周期性地刷新并显示 uptime
的输出,以实时监视系统的运行状况。
- 显示系统启动时间:
uptime -s
这将显示系统的启动时间,即系统何时启动的。
- 显示平均负载:
uptime | cut -d "," -f 3-4
这将只显示平均负载的部分,通常用于脚本或监控。
- 指定时间格式:
uptime -f
这将以特定格式显示系统启动的时间。
- 以可读的方式显示平均负载:
uptime -r
这将以可读的方式显示平均负载,例如 “2 days”。
- 显示每个核心的平均负载:
uptime -q
这将显示每个核心的平均负载,适用于多核系统。
- 指定显示时间间隔:
uptime -i 5
这将每隔 5 秒显示一次系统的运行时间、平均负载和当前登录用户数。
- 显示帮助信息:
uptime --help
这将显示 uptime
命令的帮助信息,列出可用的选项。
请注意,uptime
命令通常是系统监控和性能分析的起点之一,它提供了一个简单而有用的方式来查看系统的整体状况。
系统整体cpu使用率(vmstat、mpstat、top、sar、/proc/stat)
vmstat
命令用于报告虚拟内存统计信息,包括进程、内存、交换、IO 等。以下是 vmstat
命令的详细使用方法:
- 基本用法:
vmstat
这将显示一组默认的虚拟内存统计信息,包括进程、内存、交换、IO 等。
- 指定刷新时间和次数:
vmstat [delay] [count]
-
delay
是刷新时间间隔,单位是秒。 -
count
是刷新次数。如果不指定count
,vmstat
将一直运行。
例如,vmstat 2 5
将每两秒刷新一次,共刷新五次。
- 显示详细信息:
vmstat -a
这将显示更详细的系统活动统计信息,包括内存、交换、IO 等。
- 显示活动与非活动内存统计:
vmstat -a -S m
这将以 MB 为单位显示内存统计信息。
- 仅显示指定内容:
vmstat -s
这将只显示汇总的内存、交换、中断等信息,而不显示进程和IO的详细信息。
- 显示磁盘IO统计信息:
vmstat -d
这将显示磁盘的读写统计信息。
- 显示系统中断和上下文切换:
vmstat -i
这将显示中断和上下文切换的统计信息。
- 显示 CPU 利用率详细信息:
vmstat -P ALL
这将显示每个 CPU 的利用率详细信息。
- 显示内存和交换空间使用情况:
vmstat -SM
这将以 MB 为单位显示内存和交换空间的使用情况。
- 显示进程的统计信息:
vmstat -p [disk]
这将显示进程的统计信息,包括在等待磁盘的进程。
- 显示内存的 slab 统计信息:
vmstat -m
这将显示内核 slab 的统计信息。
- 显示版本信息:
vmstat -V
这将显示 vmstat
的版本信息。
- 显示帮助信息:
vmstat --help
这将显示 vmstat
命令的帮助信息,列出可用的选项。
vmstat
命令对于监视系统整体性能、识别性能瓶颈非常有用。通过不同的选项,你可以选择显示不同类型的统计信息。
sar
(System Activity Reporter)是一个用于报告系统活动统计信息的工具。它可以显示系统的各种性能参数,如CPU使用率、内存使用率、磁盘I/O、网络活动等。以下是 sar
命令的一些详细使用方法:
- 基本用法:
sar
运行 sar
命令将显示当前日期的系统活动报告。
- 指定时间间隔和次数:
sar [interval] [count]
-
interval
是报告之间的时间间隔(以秒为单位)。 -
count
是报告的次数。
例如,sar 5 3
将每5秒生成一次报告,共生成3次。
- 显示CPU利用率:
sar -u
这将显示CPU的使用率,包括用户、系统和空闲时间。
- 显示内存使用情况:
sar -r
这将显示内存的使用情况,包括空闲、缓存和已使用的内存。
- 显示磁盘I/O统计信息:
sar -b
这将显示磁盘I/O的统计信息,包括每秒的读写次数、读写块数等。
- 显示队列和负载信息:
sar -q
这将显示系统队列的统计信息,包括进程队列长度和平均负载。
- 显示网络统计信息:
sar -n DEV
这将显示网络接口的统计信息,包括接收和发送的数据包数量、错误等。
- 显示系统调用和交换空间统计:
sar -S
这将显示系统调用和交换空间的统计信息。
- 显示文件系统统计信息:
sar -f /var/log/sa/sa<DD>
替换 <DD>
为某一天的日期(如01,02),这将显示指定日期的文件系统统计信息。
- 显示进程创建和删除的统计信息:
sar -c
这将显示进程的创建和删除的统计信息。
- 显示交换分区的统计信息:
sar -W
这将显示交换分区的统计信息。
- 以ASCII图形显示实时负载信息:
sar -q -n DEV -u -o | sadf -g
这将以ASCII图形形式显示CPU使用率、队列长度和网络活动的实时图形。
- 显示版本信息:
sar -V
这将显示 sar
命令的版本信息。
- 显示帮助信息:
sar --help
这将显示 sar
命令的帮助信息,列出可用的选项。
sar
命令提供了丰富的系统活动报告,可以根据具体需求选择不同的选项进行监控。
mpstat
(Multiple Processor Statistics)是一个用于显示多处理器系统中各个处理器的使用情况的工具。以下是 mpstat
命令的详细使用方法:
- 基本用法:
mpstat
运行 mpstat
命令将显示所有可用处理器的平均统计信息。
- 指定时间间隔和次数:
mpstat [interval] [count]
-
interval
是报告之间的时间间隔(以秒为单位)。 -
count
是报告的次数。
例如,mpstat 5 3
将每5秒生成一次报告,共生成3次。
- 显示指定处理器的统计信息:
mpstat -P ALL
这将显示所有处理器的详细统计信息,包括每个处理器的使用率、空闲率等。
- 显示指定处理器的统计信息(指定处理器编号):
mpstat -P <processor_number>
替换 <processor_number>
为特定处理器的编号。例如,mpstat -P 0
将显示处理器 0 的统计信息。
- 以JSON格式输出统计信息:
mpstat -o JSON
这将以JSON格式输出处理器的统计信息。
- 显示CPU的软中断和硬中断信息:
mpstat -I SUM
这将显示CPU的软中断和硬中断的总体信息。
- 显示详细的I/O统计信息:
mpstat -d
这将显示磁盘I/O的详细统计信息,包括读写速率、IOPS等。
- 显示内存统计信息:
mpstat -s
这将显示内存的统计信息,包括页面交换、缺页错误等。
- 显示任务上下文切换和中断统计信息:
mpstat -w
这将显示任务上下文切换和中断的统计信息。
- 显示虚拟内存和文件交换统计信息:
mpstat -W
这将显示虚拟内存和文件交换的统计信息。
- 显示指定进程的统计信息:
mpstat -p <process_id>
替换 <process_id>
为特定进程的标识符(PID)。这将显示指定进程的统计信息。
- 显示版本信息:
mpstat -V
这将显示 mpstat
命令的版本信息。
- 显示帮助信息:
mpstat --help
这将显示 mpstat
命令的帮助信息,列出可用的选项。
mpstat
命令是一个强大的工具,通过不同的选项可以获取系统各个方面的性能统计信息,有助于分析系统的负载和性能。
/proc/stat
文件提供了关于系统各种统计信息的实时信息,包括CPU使用情况、中断、上下文切换等。以下是对 /proc/stat
的详细使用方法:
- 查看整体统计信息:
cat /proc/stat
运行上述命令将输出 /proc/stat
文件中的整体统计信息。
- 显示CPU使用情况:
grep 'cpu ' /proc/stat
上述命令将显示所有CPU的使用情况,包括用户态、系统态、空闲等时间。
- 显示指定CPU核心的使用情况:
grep 'cpu<core_number>' /proc/stat
将 <core_number>
替换为特定CPU核心的编号,例如,cpu0
表示第一个CPU核心。
- 显示中断信息:
grep 'intr ' /proc/stat
此命令将显示中断的统计信息,包括每个中断的触发次数。
- 显示上下文切换信息:
grep 'ctxt ' /proc/stat
此命令将显示上下文切换的统计信息,包括自引导以来的上下文切换次数。
- 显示软中断信息:
grep 'softirq ' /proc/stat
此命令将显示软中断的统计信息,包括每个软中断的触发次数。
- 显示系统启动时间:
grep 'btime ' /proc/stat
此命令将显示系统启动的时间戳。
- 显示内存页的统计信息:
grep 'page ' /proc/stat
此命令将显示内存页的统计信息,包括页的读写、交换等情况。
- 显示系统启动后的空闲时间:
grep 'idle ' /proc/stat
此命令将显示系统启动后的总空闲时间,包括所有CPU核心。
- 显示CPU核心的详细信息:
grep 'cpu<core_number>' /proc/stat
替换 <core_number>
为特定CPU核心的编号,例如,cpu0
。
- 显示中断的详细信息:
grep 'intr' /proc/stat
此命令将显示中断的详细信息,包括每个中断的触发次数。
- 显示上下文切换的详细信息:
grep 'ctxt' /proc/stat
此命令将显示上下文切换的详细信息,包括自引导以来的上下文切换次数。
- 显示软中断的详细信息:
grep 'softirq' /proc/stat
此命令将显示软中断的详细信息,包括每个软中断的触发次数。
- 显示CPU的详细信息:
grep '^cpu[0-9]' /proc/stat
此命令将显示每个CPU核心的详细信息,包括用户态、系统态、空闲等时间。
- 显示CPU时间的详细信息:
grep '^cpu ' /proc/stat
此命令将显示总体CPU时间的详细信息,包括用户态、系统态、空闲等时间。
/proc/stat
文件的内容可能有点庞大,但可以根据具体需求使用上述命令提取感兴趣的统计信息。
进程CPU使用率(top、pidstat、ps、htop、atop)
pidstat
是一个用于监视进程资源使用情况的工具,通常属于 sysstat
软件包的一部分。下面是一些 pidstat
的详细使用方法:
pidstat [选项] [间隔时间 [次数]]
常见选项:
-
-u
:显示 CPU 使用情况。 -
-r
:显示内存使用情况。 -
-d
:显示磁盘 I/O 使用情况。 -
-w
:显示上下文切换和任务切换。 -
-p <pid>
:指定监视的进程号。 -
-t
:显示线程级别的统计。 -
-h
:以可读格式显示统计信息。 -
-I <interval>
:设置报告间隔时间(秒)。 -
-U
:显示 CPU 使用情况的累积值。
示例用法:
- 监视 CPU 使用情况:
pidstat -u 1
这将以1秒的间隔显示每个进程的 CPU 使用情况。
- 监视特定进程的 CPU 使用情况:
pidstat -u -p <pid> 1
替换 <pid>
为要监视的进程号。
- 显示内存使用情况:
pidstat -r 1
这将以1秒的间隔显示每个进程的内存使用情况。
- 显示磁盘 I/O 使用情况:
pidstat -d 1
这将以1秒的间隔显示每个进程的磁盘 I/O 使用情况。
- 显示上下文切换和任务切换:
pidstat -w 1
这将以1秒的间隔显示每个进程的上下文切换和任务切换情况。
- 显示线程级别的统计:
pidstat -t 1
这将以1秒的间隔显示每个进程的线程级别的统计信息。
- 显示 CPU 使用情况的累积值:
pidstat -U 1
这将以1秒的间隔显示 CPU 使用情况的累积值。
注意事项:
-
pidstat
默认情况下会显示所有正在运行的进程。可以通过-p
选项指定要监视的特定进程。 - 间隔时间和次数是可选的,如果不提供,默认将显示一次统计信息。
-
pidstat
的详细输出包括 CPU 用户空间时间、CPU 内核空间时间、CPU 空闲时间、内存使用、磁盘 I/O 等信息。
ps
是一个用于显示当前系统进程状态的命令。以下是 ps
命令的一些详细使用方法:
ps [选项]
常见选项:
- 进程选择选项:
-
a
:显示所有进程,包括其他用户的进程。 -
u
:以用户为中心显示进程信息。 -
x
:显示没有控制终端的进程。
ps aux
这将显示所有用户的详细进程信息。
- 输出格式选项:
-
o
:自定义输出格式。 -
f
:以树状结构显示进程关系。
ps aux --sort=-%cpu
这将按 CPU 使用率降序显示所有用户的详细进程信息。
- 进程状态选项:
-
r
:显示运行中的进程。 -
s
:显示休眠中的进程。
ps aux --state R
这将显示所有运行中的进程。
- 进程排序选项:
-
--sort
:按指定列进行排序。
ps aux --sort=-%mem
这将按内存使用率降序显示所有用户的详细进程信息。
- 其他选项:
-
e
:显示环境变量。 -
www
:宽输出,适用于显示长命令行。
ps auxe
这将显示带有环境变量的所有用户的详细进程信息。
示例用法:
- 显示当前用户的所有进程:
ps
- 显示所有用户的详细进程信息:
ps aux
- 以树状结构显示进程关系:
ps auxf
- 按 CPU 使用率降序显示所有用户的详细进程信息:
ps aux --sort=-%cpu
- 显示运行中的进程:
ps aux --state R
- 按内存使用率降序显示所有用户的详细进程信息:
ps aux --sort=-%mem
- 显示带有环境变量的所有用户的详细进程信息:
ps auxe
注意事项:
-
ps
命令的选项和输出格式可能在不同的操作系统上有所不同。上述示例主要针对 Linux 系统,其他 Unix 系统可能有些许区别。
htop
是一个交互式的系统监视工具,它可以以颜色和图形的形式展示系统的各种信息。以下是 htop
的一些详细使用方法:
- 安装 htop:
在大多数 Linux 发行版中,可以使用包管理器安装htop
:
sudo apt-get install htop # Ubuntu/Debian
sudo yum install htop # CentOS/RHEL
- 运行 htop:
直接在终端中输入htop
并按回车键即可启动htop
。
htop
- htop 主要界面元素:
- 顶部区域: 包含系统整体的负载信息、CPU 使用率、内存使用情况等。
- 进程列表: 显示当前运行的进程列表,按 CPU 使用率或内存使用率排序。
- 底部区域: 提供可用的快捷键列表。
- 基本操作:
- 使用箭头键在进程列表中导航。
- 使用
F5
刷新显示。 - 使用
F9
打开进程操作菜单,可以选择杀死进程等选项。 - 使用
F10
退出htop
。
- 颜色标识:
htop
使用颜色标识不同类型的进程和系统资源使用情况,比如 CPU 使用率、内存使用率、交换空间等。 - 进程操作:
- 使用
F9
进入进程操作菜单,选择需要的操作,如杀死进程。 - 使用
k
键杀死选中的进程。
- 搜索进程:
- 使用
/
键输入关键字搜索进程。
- 设置选项:
- 使用
F2
进入设置界面,可以配置显示选项、排序方式等。
- 快捷键:
htop
提供了一系列快捷键,可以在底部区域查看。例如:
-
F1
显示帮助。 -
F3
和F4
用于搜索进程。 -
F6
选择排序方式。 - …
注意事项:
-
htop
可以根据系统配置和权限的不同而提供不同的功能,一些操作可能需要 root 权限。 -
htop
的功能和界面可能在不同的操作系统和版本中有所不同,上述介绍主要基于 Linux 系统。
atop
是一个类似于 top
的系统性能监视工具,但它提供了更多的功能和更详细的信息。以下是 atop
的一些详细使用方法:
- 安装 atop:
在大多数 Linux 发行版中,可以使用包管理器安装atop
:
sudo apt-get install atop # Ubuntu/Debian
sudo yum install atop # CentOS/RHEL
- 运行 atop:
直接在终端中输入atop
并按回车键即可启动atop
。
atop
- atop 主要界面元素:
- 顶部区域: 包含系统整体的负载信息、CPU 使用率、内存使用情况等。
- 进程列表: 显示当前运行的进程列表,按 CPU 使用率或内存使用率排序。
- 底部区域: 提供了可用的快捷键列表。
- 基本操作:
- 使用箭头键在进程列表中导航。
- 使用
t
切换显示模式,包括cpu
、mem
、disk
等。 - 使用
P
切换到按 CPU 使用率排序的进程列表,使用M
切换到按内存使用率排序的列表。
- 颜色标识:
atop
使用颜色标识不同类型的进程和系统资源使用情况,类似于htop
。 - 进程操作:
- 使用
k
键杀死选中的进程。 - 使用
r
键重启选中的进程。
- 搜索进程:
- 使用
:
键输入关键字搜索进程。
- 设置选项:
- 使用
O
进入设置界面,可以配置显示选项、排序方式等。
- 显示磁盘和网络信息:
- 使用
d
切换到显示磁盘信息。 - 使用
n
切换到显示网络信息。
- 快捷键:
atop
提供了一系列快捷键,可以在底部区域查看。例如:
-
?
显示帮助。 -
q
退出atop
。
- 查看历史记录:
- 使用
t
键可以查看系统资源的历史记录。
- 保存数据:
- 使用
W
键将当前atop
的状态保存到文件中。
注意事项:
-
atop
需要 root 权限来访问某些系统信息。 -
atop
提供了丰富的信息和功能,可以通过手册页 (man atop
) 查看更详细的文档。
系统上下文切换(vmstat)
进程上下文切换(pidstatat)
软中断(top、/proc/softirqs、mpstat)
/proc/softirqs
文件提供了有关软中断(softirqs)的信息。软中断是内核用于在内核上下文中异步执行延迟工作的一种机制。/proc/softirqs
文件显示了每个软中断的统计信息。以下是使用该文件的一些详细方法:
- 查看
/proc/softirqs
内容:
直接使用cat
命令查看/proc/softirqs
文件的内容:
cat /proc/softirqs
输出将显示软中断的统计信息,按照软中断类型和 CPU 核心分组。
- 软中断的列说明:
输出的列包括:
- CPU 核心编号: 列的第一列显示 CPU 的编号。
- 软中断类型: 除了 CPU 列之外的列包含不同类型的软中断。
- Counter: 每个软中断类型的计数器,表示软中断已经触发的次数。
示例如下:
CPU0 CPU1 CPU2 CPU3
...
HI: 16693 12848 9694 15849 Hardware interrupts
...
TIMER: 35946 29293 29872 28846 Timer interrupts
...
- 解释软中断类型:
- HI (Hardware interrupts): 硬中断,表示硬件设备引起的中断。
- TIMER (Timer interrupts): 定时器中断,由系统定时器引起的中断。
- 其他类型的软中断也可能出现,取决于系统配置和正在运行的任务。
- 监控软中断:
- 如果你想监控软中断的变化,可以使用类似
watch
命令:
watch -n 1 cat /proc/softirqs
这将每秒刷新一次软中断的统计信息。
注意事项:
-
/proc/softirqs
文件提供了一种实时查看软中断统计信息的方法,用于诊断系统性能问题。 - 软中断是内核中的一种异步执行机制,通常用于处理网络数据包、磁盘 I/O 等。
- 在解释软中断统计时,重要的是查看相邻两次采样之间的变化,而不仅仅关注绝对值。
硬中断(vmstat、/proc/interrupts)
/proc/interrupts
文件提供了关于系统中断的详细信息,包括每个 IRQ(Interrupt Request)线路的中断请求统计。以下是使用该文件的详细方法:
- 查看
/proc/interrupts
内容:
直接使用cat
命令查看/proc/interrupts
文件的内容:
cat /proc/interrupts
输出将显示每个 IRQ 线路上的中断请求统计,按照 CPU 核心和中断类型分组。
- IRQ 统计列的说明:
输出的列包括:
- IRQ: 中断请求线路的编号。
- CPU 核心编号: 列的第一列显示 CPU 的编号。
- Count: 每个 IRQ 线路的中断请求数量。
示例如下:
CPU0 CPU1 CPU2 CPU3
...
16: 0 0 0 0 IR-PCI-MSI 344064-edge xhci_hcd
17: 0 0 0 0 IR-PCI-MSI 294912-edge i915
18: 0 0 0 0 IR-PCI-MSI 262144-edge ahci[0000:00:1f.2]
...
- 解释中断类型:
- IR-PCI-MSI: 使用 PCI MSI(Message Signaled Interrupts)机制的设备的中断。
- edge: 使用传统的中断触发方式的设备。
其他类型的中断也可能出现,具体取决于系统硬件和正在运行的任务。
- 监控中断:
- 如果你想监控中断的变化,可以使用类似
watch
命令:
watch -n 1 cat /proc/interrupts
这将每秒刷新一次中断统计信息。
注意事项:
-
/proc/interrupts
文件提供了实时查看系统中断统计信息的方法,用于诊断系统性能问题。 - 中断请求是硬件设备(如网卡、磁盘控制器)向 CPU 发送的信号,通知 CPU 某事件已发生需要处理。
- 通过监控中断,可以了解系统中哪些设备产生了中断,以及这些中断是否超过了正常范围,有助于识别可能的性能问题。
网络(dstat、sar、tcpdump)
dstat
是一个用于实时监控系统资源使用情况的工具,它可以提供关于 CPU、内存、磁盘、网络等方面的详细统计信息。以下是 dstat
的一些常用用法:
- 基本用法:
最简单的使用方法是在终端中直接运行dstat
命令:
dstat
这将显示默认情况下的一些基本性能统计信息,包括 CPU 使用率、内存使用率、磁盘 I/O 等。
- 指定显示内容:
使用-c
、-m
、-d
等选项可以指定要显示的内容。例如,显示 CPU 使用率和内存使用情况:
dstat -c -m
- 实时更新间隔:
使用-t
选项可以指定dstat
的刷新间隔,单位为秒。例如,每隔 2 秒更新一次:
dstat -t 2
- 显示网络信息:
使用-n
选项可以显示网络相关的统计信息:
dstat -n
- 显示磁盘信息:
使用-d
选项可以显示磁盘 I/O 相关的信息:
dstat -d
- 显示系统信息:
使用-s
选项可以显示系统相关的信息,包括系统调用、中断等:
dstat -s
- 显示进程信息:
使用-p
选项可以显示进程相关的信息,包括进程 CPU、内存占用等:
dstat -p
- 保存输出到文件:
使用--output
选项可以将dstat
的输出保存到文件中,以便后续分析:
dstat --output dstat_output.csv
这将把输出保存到 dstat_output.csv
文件中。
- 显示颜色化输出:
使用--color
选项可以启用颜色化的输出,提高可读性:
dstat --color
颜色化输出将以不同颜色区分不同的统计信息。
- 显示帮助信息:
如果需要查看更多选项和用法,可以使用--help
选项:
dstat --help
dstat
提供了丰富的选项和灵活的配置,可以根据需要监控系统的不同方面。在使用时,可以根据具体的需求选择合适的选项组合。
tcpdump
是一个网络抓包工具,用于捕获和分析网络数据包。以下是一些常见的 tcpdump
用法和选项:
- 基本用法:
最简单的tcpdump
命令用法是:
tcpdump
这将捕获系统上的所有网络接口的数据包。
- 指定网络接口:
使用-i
选项可以指定要监听的网络接口。例如,监听eth0
接口:
tcpdump -i eth0
- 过滤特定主机或网络:
使用过滤器可以限制捕获的数据包。例如,只捕获源或目标是特定 IP 地址的数据包:
tcpdump host 192.168.1.1
或者只捕获特定网络的数据包:
tcpdump net 192.168.1.0/24
- 保存到文件:
使用-w
选项可以将捕获的数据包保存到文件中:
tcpdump -w capture.pcap
这将把捕获的数据包保存到 capture.pcap
文件中,后续可以使用其他工具进行分析。
- 读取保存的文件:
使用-r
选项可以读取之前保存的数据包文件:
tcpdump -r capture.pcap
- 指定端口:
使用port
关键字可以捕获特定端口的数据包:
tcpdump port 80
这将捕获目标或源端口是 80 的数据包。
- 显示更多详细信息:
使用-v
、-vv
或-vvv
选项可以增加详细程度,显示更多的信息:
tcpdump -vv
- 显示 ASCII 数据:
使用-A
选项可以显示捕获的数据包的 ASCII 数据:
tcpdump -A
- 显示时间戳:
使用-t
选项可以显示每个数据包的时间戳:
tcpdump -t
- 显示端口号对应的服务名称:
使用-n
选项可以防止tcpdump
尝试将端口号转换为服务名称:
tcpdump -n
- 显示 ICMP 报文:
使用icmp
关键字可以捕获 ICMP 报文:
tcpdump icmp
- 显示特定协议:
使用proto
关键字可以捕获特定协议的数据包。例如,只显示 TCP 数据包:
tcpdump proto tcp
或只显示 UDP 数据包:
tcpdump proto udp
这只是 tcpdump
的一些常见用法,该工具提供了丰富的选项和过滤器,可以根据需要进行更复杂的网络数据包分析。
I/O(dstat、sar)
CPU个数(/proc/cpuinfo、lscpu)
/proc/cpuinfo
文件包含有关系统上的每个 CPU 的信息。以下是使用 /proc/cpuinfo
的一些常见用法:
- 查看 CPU 信息:
使用cat
命令可以查看整个/proc/cpuinfo
文件的内容:
cat /proc/cpuinfo
这将显示有关每个 CPU 的详细信息,包括型号、速度、缓存等。
- 显示 CPU 的物理核数:
使用grep
命令可以筛选物理核心的数量:
grep "physical id" /proc/cpuinfo | sort -u | wc -l
这将显示系统中的物理 CPU 数量。
- 显示 CPU 的逻辑核数:
使用grep
命令可以筛选逻辑核心的数量:
grep "processor" /proc/cpuinfo | wc -l
这将显示系统中的逻辑 CPU 数量。
- 显示 CPU 的型号和速度:
使用grep
命令可以筛选 CPU 的型号和速度信息:
grep "model name" /proc/cpuinfo
grep "cpu MHz" /proc/cpuinfo
这将显示每个 CPU 的型号和速度。
- 显示 CPU 缓存信息:
使用grep
命令可以筛选 CPU 缓存信息:
grep "cache size" /proc/cpuinfo
这将显示每个 CPU 的缓存大小。
- 显示 CPU 支持的特性:
使用grep
命令可以筛选 CPU 支持的特性:
grep "flags" /proc/cpuinfo
这将显示每个 CPU 支持的特性,如 SSE、SSE2、AVX 等。
- 显示 CPU 架构:
使用grep
命令可以筛选 CPU 的架构信息:
grep "arch" /proc/cpuinfo
这将显示每个 CPU 的架构,如 x86_64。
- 显示 CPU 是否支持虚拟化:
使用grep
命令可以查看 CPU 是否支持虚拟化:
grep "vmx" /proc/cpuinfo
如果输出中包含 “vmx”,则表示 CPU 支持虚拟化。
这些是 /proc/cpuinfo
文件的一些常见用法,可以根据具体需求筛选和显示所需的信息。
lscpu
是一个用于显示有关 CPU 架构信息的命令。以下是一些常见用法:
- 查看 CPU 信息:
lscpu
这将显示有关 CPU 的详细信息,包括架构、型号、速度、缓存、核心数等。
- 显示 CPU 架构:
lscpu | grep "Architecture"
这将仅显示 CPU 的架构信息,如 x86_64。
- 显示 CPU 型号和速度:
lscpu | grep "Model name"
lscpu | grep "CPU MHz"
这将显示 CPU 的型号和速度信息。
- 显示 CPU 缓存信息:
lscpu | grep "L3 cache"
这将显示 CPU 的 L3 缓存大小。
- 显示 CPU 核心数:
lscpu | grep "Core(s) per socket"
这将显示每个 CPU 插槽的核心数。
- 显示 CPU 线程数(逻辑核数):
lscpu | grep "Thread(s) per core"
这将显示每个核心的线程数,也即逻辑核数。
- 显示 CPU 插槽数:
lscpu | grep "Socket(s)"
这将显示系统中的 CPU 插槽数。
- 显示 NUMA 节点数:
lscpu | grep "NUMA node(s)"
这将显示系统中的 NUMA 节点数。
- 显示 CPU 是否支持虚拟化:
lscpu | grep "Virtualization"
这将显示 CPU 是否支持虚拟化。
- 显示 CPU 支持的指令集:
lscpu | grep "Flags"
这将显示 CPU 支持的指令集,如 SSE、SSE2、AVX 等。
这些是 lscpu
命令的一些常见用法,你可以根据具体需求选择查看所需的信息。
事件剖析(perf、execsnoop)
perf
是 Linux 系统中性能分析的工具,用于收集性能事件和生成性能分析报告。以下是一些常见用法:
- 收集系统性能事件:
perf record -a -g -- sleep 5
这将在系统上运行 sleep
命令 5 秒钟,期间收集所有进程的性能事件。-g
选项会同时收集调用图。
- 查看性能报告:
perf report
这将生成一个性能报告,显示系统上收集到的性能事件信息。你可以使用箭头键和回车键来浏览报告。
- 显示系统的 CPU 周期:
perf stat sleep 1
这将运行 sleep
命令 1 秒,并显示系统的 CPU 周期统计信息。
- 显示某个命令的性能统计:
perf stat <command>
用你想要分析性能的具体命令替代 <command>
,这将显示该命令的性能统计信息。
- 查看 CPU 指令:
perf record -e instructions -c 10000 -a
这将收集所有进程的指令计数事件,每隔 10000 个事件报告一次。
- 查看缓存命中率:
perf stat -e cache-references,cache-misses <command>
这将运行 <command>
命令并显示缓存引用和缓存失效的统计信息。
- 记录 CPU 周期计数:
perf record -e cycles -a
这将收集所有进程的 CPU 周期计数信息。
- 显示函数调用图:
perf record -g -p <PID>
这将在指定的进程上启动性能事件收集,并包括函数调用图。
- 显示指定进程的性能信息:
perf top -p <PID>
这将显示指定进程的实时性能信息,类似于 top
命令。
- 生成火焰图:
perf script | stackcollapse-perf.pl | flamegraph.pl > flamegraph.svg
这将生成火焰图,用于可视化系统中的函数调用情况。
这些只是 perf
工具的一些基本用法,你可以根据具体的需求和关注点选择不同的性能事件进行分析。
execsnoop
是 sysdig
工具的一部分,用于跟踪系统上的进程启动事件。以下是一些常见用法:
- 基本用法:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve
这将实时显示执行 execve
系统调用的进程信息,包括用户名、进程 ID、进程名和事件类型。
- 按用户名过滤:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve and user.name=your_username
用你的用户名替代 your_username
,这样可以只显示特定用户的进程启动信息。
- 按进程名过滤:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve and proc.name=your_process
用你的进程名替代 your_process
,这样可以只显示特定进程的启动信息。
- 按进程 ID 过滤:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve and proc.pid=your_pid
用你的进程 ID 替代 your_pid
,这样可以只显示特定进程的启动信息。
- 输出到文件:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve > execsnoop.log
这将将输出重定向到文件,以便稍后分析。
- 按照时间戳排序:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve | sort -k1
这将按照时间戳排序输出。
- 显示执行命令的完整路径:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type %proc.args" evt.type=execve
这将显示执行命令的完整路径。
请注意,使用 sysdig
工具需要系统具有相应的权限。在上述命令中,sudo
用于获取必要的权限。确保在使用此工具时谨慎操作,以免产生不必要的风险。execsnoop
是 sysdig
工具的一部分,用于跟踪系统上的进程启动事件。以下是一些常见用法:
- 基本用法:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve
这将实时显示执行 execve
系统调用的进程信息,包括用户名、进程 ID、进程名和事件类型。
- 按用户名过滤:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve and user.name=your_username
用你的用户名替代 your_username
,这样可以只显示特定用户的进程启动信息。
- 按进程名过滤:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve and proc.name=your_process
用你的进程名替代 your_process
,这样可以只显示特定进程的启动信息。
- 按进程 ID 过滤:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve and proc.pid=your_pid
用你的进程 ID 替代 your_pid
,这样可以只显示特定进程的启动信息。
- 输出到文件:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve > execsnoop.log
这将将输出重定向到文件,以便稍后分析。
- 按照时间戳排序:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve | sort -k1
这将按照时间戳排序输出。
- 显示执行命令的完整路径:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type %proc.args" evt.type=execve
这将显示执行命令的完整路径。
请注意,使用 sysdig
工具需要系统具有相应的权限。在上述命令中,sudo
用于获取必要的权限。确保在使用此工具时谨慎操作,以免产生不必要的风险。