本文主要探讨了一系列用于监控和分析系统 CPU 性能的工具,包括 topuptimevmstatmpstatsarpidstatpsdstatperftcpdumplscpu。这些工具在系统管理和性能优化中起着关键的作用。通过实时监测进程、系统负载、虚拟内存、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. 示例:

  1. 基本使用:
top
  1. 指定刷新时间为2秒:
top -d 2
  1. 显示完整的命令行:
top -c
  1. 指定要显示的用户:
top -u username
  1. 指定要监视的进程:
top -p pid

6. 注意事项:

  • top 默认按 CPU 使用率降序排序进程。按 Shift + M 键可以切换到按内存使用率排序。
  • top 是一个实时监控工具,通过不断更新显示当前系统状态。
  • 可以通过 man top 查看 top 的手册页,了解更多选项和用法。

top 提供了丰富的信息,可以通过键盘快捷键进行交互,方便用户实时监视系统状态。

uptime 命令用于显示系统的当前运行时间、平均负载以及当前登录用户数。以下是 uptime 命令的详细使用方法:

  1. 基本用法:
uptime

这将显示系统的当前运行时间、平均负载以及当前登录用户数。

  1. 显示详细信息:
uptime -p

这将显示更详细的系统运行时间,包括天数、小时、分钟。

  1. 定时刷新显示:
watch uptime

这将周期性地刷新并显示 uptime 的输出,以实时监视系统的运行状况。

  1. 显示系统启动时间:
uptime -s

这将显示系统的启动时间,即系统何时启动的。

  1. 显示平均负载:
uptime | cut -d "," -f 3-4

这将只显示平均负载的部分,通常用于脚本或监控。

  1. 指定时间格式:
uptime -f

这将以特定格式显示系统启动的时间。

  1. 以可读的方式显示平均负载:
uptime -r

这将以可读的方式显示平均负载,例如 “2 days”。

  1. 显示每个核心的平均负载:
uptime -q

这将显示每个核心的平均负载,适用于多核系统。

  1. 指定显示时间间隔:
uptime -i 5

这将每隔 5 秒显示一次系统的运行时间、平均负载和当前登录用户数。

  1. 显示帮助信息:
uptime --help

这将显示 uptime 命令的帮助信息,列出可用的选项。

请注意,uptime 命令通常是系统监控和性能分析的起点之一,它提供了一个简单而有用的方式来查看系统的整体状况。

系统整体cpu使用率(vmstat、mpstat、top、sar、/proc/stat)

vmstat 命令用于报告虚拟内存统计信息,包括进程、内存、交换、IO 等。以下是 vmstat 命令的详细使用方法:

  1. 基本用法:
vmstat

这将显示一组默认的虚拟内存统计信息,包括进程、内存、交换、IO 等。

  1. 指定刷新时间和次数:
vmstat [delay] [count]
  • delay 是刷新时间间隔,单位是秒。
  • count 是刷新次数。如果不指定 countvmstat 将一直运行。

例如,vmstat 2 5 将每两秒刷新一次,共刷新五次。

  1. 显示详细信息:
vmstat -a

这将显示更详细的系统活动统计信息,包括内存、交换、IO 等。

  1. 显示活动与非活动内存统计:
vmstat -a -S m

这将以 MB 为单位显示内存统计信息。

  1. 仅显示指定内容:
vmstat -s

这将只显示汇总的内存、交换、中断等信息,而不显示进程和IO的详细信息。

  1. 显示磁盘IO统计信息:
vmstat -d

这将显示磁盘的读写统计信息。

  1. 显示系统中断和上下文切换:
vmstat -i

这将显示中断和上下文切换的统计信息。

  1. 显示 CPU 利用率详细信息:
vmstat -P ALL

这将显示每个 CPU 的利用率详细信息。

  1. 显示内存和交换空间使用情况:
vmstat -SM

这将以 MB 为单位显示内存和交换空间的使用情况。

  1. 显示进程的统计信息:
vmstat -p [disk]

这将显示进程的统计信息,包括在等待磁盘的进程。

  1. 显示内存的 slab 统计信息:
vmstat -m

这将显示内核 slab 的统计信息。

  1. 显示版本信息:
vmstat -V

这将显示 vmstat 的版本信息。

  1. 显示帮助信息:
vmstat --help

这将显示 vmstat 命令的帮助信息,列出可用的选项。

vmstat 命令对于监视系统整体性能、识别性能瓶颈非常有用。通过不同的选项,你可以选择显示不同类型的统计信息。

sar(System Activity Reporter)是一个用于报告系统活动统计信息的工具。它可以显示系统的各种性能参数,如CPU使用率、内存使用率、磁盘I/O、网络活动等。以下是 sar 命令的一些详细使用方法:

  1. 基本用法:
sar

运行 sar 命令将显示当前日期的系统活动报告。

  1. 指定时间间隔和次数:
sar [interval] [count]
  • interval 是报告之间的时间间隔(以秒为单位)。
  • count 是报告的次数。

例如,sar 5 3 将每5秒生成一次报告,共生成3次。

  1. 显示CPU利用率:
sar -u

这将显示CPU的使用率,包括用户、系统和空闲时间。

  1. 显示内存使用情况:
sar -r

这将显示内存的使用情况,包括空闲、缓存和已使用的内存。

  1. 显示磁盘I/O统计信息:
sar -b

这将显示磁盘I/O的统计信息,包括每秒的读写次数、读写块数等。

  1. 显示队列和负载信息:
sar -q

这将显示系统队列的统计信息,包括进程队列长度和平均负载。

  1. 显示网络统计信息:
sar -n DEV

这将显示网络接口的统计信息,包括接收和发送的数据包数量、错误等。

  1. 显示系统调用和交换空间统计:
sar -S

这将显示系统调用和交换空间的统计信息。

  1. 显示文件系统统计信息:
sar -f /var/log/sa/sa<DD>

替换 <DD> 为某一天的日期(如01,02),这将显示指定日期的文件系统统计信息。

  1. 显示进程创建和删除的统计信息:
sar -c

这将显示进程的创建和删除的统计信息。

  1. 显示交换分区的统计信息:
sar -W

这将显示交换分区的统计信息。

  1. 以ASCII图形显示实时负载信息:
sar -q -n DEV -u -o | sadf -g

这将以ASCII图形形式显示CPU使用率、队列长度和网络活动的实时图形。

  1. 显示版本信息:
sar -V

这将显示 sar 命令的版本信息。

  1. 显示帮助信息:
sar --help

这将显示 sar 命令的帮助信息,列出可用的选项。

sar 命令提供了丰富的系统活动报告,可以根据具体需求选择不同的选项进行监控。

mpstat(Multiple Processor Statistics)是一个用于显示多处理器系统中各个处理器的使用情况的工具。以下是 mpstat 命令的详细使用方法:

  1. 基本用法:
mpstat

运行 mpstat 命令将显示所有可用处理器的平均统计信息。

  1. 指定时间间隔和次数:
mpstat [interval] [count]
  • interval 是报告之间的时间间隔(以秒为单位)。
  • count 是报告的次数。

例如,mpstat 5 3 将每5秒生成一次报告,共生成3次。

  1. 显示指定处理器的统计信息:
mpstat -P ALL

这将显示所有处理器的详细统计信息,包括每个处理器的使用率、空闲率等。

  1. 显示指定处理器的统计信息(指定处理器编号):
mpstat -P <processor_number>

替换 <processor_number> 为特定处理器的编号。例如,mpstat -P 0 将显示处理器 0 的统计信息。

  1. 以JSON格式输出统计信息:
mpstat -o JSON

这将以JSON格式输出处理器的统计信息。

  1. 显示CPU的软中断和硬中断信息:
mpstat -I SUM

这将显示CPU的软中断和硬中断的总体信息。

  1. 显示详细的I/O统计信息:
mpstat -d

这将显示磁盘I/O的详细统计信息,包括读写速率、IOPS等。

  1. 显示内存统计信息:
mpstat -s

这将显示内存的统计信息,包括页面交换、缺页错误等。

  1. 显示任务上下文切换和中断统计信息:
mpstat -w

这将显示任务上下文切换和中断的统计信息。

  1. 显示虚拟内存和文件交换统计信息:
mpstat -W

这将显示虚拟内存和文件交换的统计信息。

  1. 显示指定进程的统计信息:
mpstat -p <process_id>

替换 <process_id> 为特定进程的标识符(PID)。这将显示指定进程的统计信息。

  1. 显示版本信息:
mpstat -V

这将显示 mpstat 命令的版本信息。

  1. 显示帮助信息:
mpstat --help

这将显示 mpstat 命令的帮助信息,列出可用的选项。

mpstat 命令是一个强大的工具,通过不同的选项可以获取系统各个方面的性能统计信息,有助于分析系统的负载和性能。

/proc/stat 文件提供了关于系统各种统计信息的实时信息,包括CPU使用情况、中断、上下文切换等。以下是对 /proc/stat 的详细使用方法:

  1. 查看整体统计信息:
cat /proc/stat

运行上述命令将输出 /proc/stat 文件中的整体统计信息。

  1. 显示CPU使用情况:
grep 'cpu ' /proc/stat

上述命令将显示所有CPU的使用情况,包括用户态、系统态、空闲等时间。

  1. 显示指定CPU核心的使用情况:
grep 'cpu<core_number>' /proc/stat

<core_number> 替换为特定CPU核心的编号,例如,cpu0 表示第一个CPU核心。

  1. 显示中断信息:
grep 'intr ' /proc/stat

此命令将显示中断的统计信息,包括每个中断的触发次数。

  1. 显示上下文切换信息:
grep 'ctxt ' /proc/stat

此命令将显示上下文切换的统计信息,包括自引导以来的上下文切换次数。

  1. 显示软中断信息:
grep 'softirq ' /proc/stat

此命令将显示软中断的统计信息,包括每个软中断的触发次数。

  1. 显示系统启动时间:
grep 'btime ' /proc/stat

此命令将显示系统启动的时间戳。

  1. 显示内存页的统计信息:
grep 'page ' /proc/stat

此命令将显示内存页的统计信息,包括页的读写、交换等情况。

  1. 显示系统启动后的空闲时间:
grep 'idle ' /proc/stat

此命令将显示系统启动后的总空闲时间,包括所有CPU核心。

  1. 显示CPU核心的详细信息:
grep 'cpu<core_number>' /proc/stat

替换 <core_number> 为特定CPU核心的编号,例如,cpu0

  1. 显示中断的详细信息:
grep 'intr' /proc/stat

此命令将显示中断的详细信息,包括每个中断的触发次数。

  1. 显示上下文切换的详细信息:
grep 'ctxt' /proc/stat

此命令将显示上下文切换的详细信息,包括自引导以来的上下文切换次数。

  1. 显示软中断的详细信息:
grep 'softirq' /proc/stat

此命令将显示软中断的详细信息,包括每个软中断的触发次数。

  1. 显示CPU的详细信息:
grep '^cpu[0-9]' /proc/stat

此命令将显示每个CPU核心的详细信息,包括用户态、系统态、空闲等时间。

  1. 显示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 使用情况的累积值。

示例用法:

  1. 监视 CPU 使用情况:
pidstat -u 1

这将以1秒的间隔显示每个进程的 CPU 使用情况。

  1. 监视特定进程的 CPU 使用情况:
pidstat -u -p <pid> 1

替换 <pid> 为要监视的进程号。

  1. 显示内存使用情况:
pidstat -r 1

这将以1秒的间隔显示每个进程的内存使用情况。

  1. 显示磁盘 I/O 使用情况:
pidstat -d 1

这将以1秒的间隔显示每个进程的磁盘 I/O 使用情况。

  1. 显示上下文切换和任务切换:
pidstat -w 1

这将以1秒的间隔显示每个进程的上下文切换和任务切换情况。

  1. 显示线程级别的统计:
pidstat -t 1

这将以1秒的间隔显示每个进程的线程级别的统计信息。

  1. 显示 CPU 使用情况的累积值:
pidstat -U 1

这将以1秒的间隔显示 CPU 使用情况的累积值。

注意事项:

  • pidstat 默认情况下会显示所有正在运行的进程。可以通过 -p 选项指定要监视的特定进程。
  • 间隔时间和次数是可选的,如果不提供,默认将显示一次统计信息。
  • pidstat 的详细输出包括 CPU 用户空间时间、CPU 内核空间时间、CPU 空闲时间、内存使用、磁盘 I/O 等信息。

ps 是一个用于显示当前系统进程状态的命令。以下是 ps 命令的一些详细使用方法:

ps [选项]

常见选项:

  1. 进程选择选项:
  • a:显示所有进程,包括其他用户的进程。
  • u:以用户为中心显示进程信息。
  • x:显示没有控制终端的进程。
ps aux

这将显示所有用户的详细进程信息。

  1. 输出格式选项:
  • o:自定义输出格式。
  • f:以树状结构显示进程关系。
ps aux --sort=-%cpu

这将按 CPU 使用率降序显示所有用户的详细进程信息。

  1. 进程状态选项:
  • r:显示运行中的进程。
  • s:显示休眠中的进程。
ps aux --state R

这将显示所有运行中的进程。

  1. 进程排序选项:
  • --sort:按指定列进行排序。
ps aux --sort=-%mem

这将按内存使用率降序显示所有用户的详细进程信息。

  1. 其他选项:
  • e:显示环境变量。
  • www:宽输出,适用于显示长命令行。
ps auxe

这将显示带有环境变量的所有用户的详细进程信息。

示例用法:

  1. 显示当前用户的所有进程:
ps
  1. 显示所有用户的详细进程信息:
ps aux
  1. 以树状结构显示进程关系:
ps auxf
  1. 按 CPU 使用率降序显示所有用户的详细进程信息:
ps aux --sort=-%cpu
  1. 显示运行中的进程:
ps aux --state R
  1. 按内存使用率降序显示所有用户的详细进程信息:
ps aux --sort=-%mem
  1. 显示带有环境变量的所有用户的详细进程信息:
ps auxe

注意事项:

  • ps 命令的选项和输出格式可能在不同的操作系统上有所不同。上述示例主要针对 Linux 系统,其他 Unix 系统可能有些许区别。

htop 是一个交互式的系统监视工具,它可以以颜色和图形的形式展示系统的各种信息。以下是 htop 的一些详细使用方法:

  1. 安装 htop:
    在大多数 Linux 发行版中,可以使用包管理器安装 htop
sudo apt-get install htop  # Ubuntu/Debian
sudo yum install htop      # CentOS/RHEL
  1. 运行 htop:
    直接在终端中输入 htop 并按回车键即可启动 htop
htop
  1. htop 主要界面元素:
  • 顶部区域: 包含系统整体的负载信息、CPU 使用率、内存使用情况等。
  • 进程列表: 显示当前运行的进程列表,按 CPU 使用率或内存使用率排序。
  • 底部区域: 提供可用的快捷键列表。
  1. 基本操作:
  • 使用箭头键在进程列表中导航。
  • 使用 F5 刷新显示。
  • 使用 F9 打开进程操作菜单,可以选择杀死进程等选项。
  • 使用 F10 退出 htop
  1. 颜色标识:
    htop 使用颜色标识不同类型的进程和系统资源使用情况,比如 CPU 使用率、内存使用率、交换空间等。
  2. 进程操作:
  • 使用 F9 进入进程操作菜单,选择需要的操作,如杀死进程。
  • 使用 k 键杀死选中的进程。
  1. 搜索进程:
  • 使用 / 键输入关键字搜索进程。
  1. 设置选项:
  • 使用 F2 进入设置界面,可以配置显示选项、排序方式等。
  1. 快捷键:
    htop 提供了一系列快捷键,可以在底部区域查看。例如:
  • F1 显示帮助。
  • F3F4 用于搜索进程。
  • F6 选择排序方式。

注意事项:

  • htop 可以根据系统配置和权限的不同而提供不同的功能,一些操作可能需要 root 权限。
  • htop 的功能和界面可能在不同的操作系统和版本中有所不同,上述介绍主要基于 Linux 系统。

atop 是一个类似于 top 的系统性能监视工具,但它提供了更多的功能和更详细的信息。以下是 atop 的一些详细使用方法:

  1. 安装 atop:
    在大多数 Linux 发行版中,可以使用包管理器安装 atop
sudo apt-get install atop  # Ubuntu/Debian
sudo yum install atop      # CentOS/RHEL
  1. 运行 atop:
    直接在终端中输入 atop 并按回车键即可启动 atop
atop
  1. atop 主要界面元素:
  • 顶部区域: 包含系统整体的负载信息、CPU 使用率、内存使用情况等。
  • 进程列表: 显示当前运行的进程列表,按 CPU 使用率或内存使用率排序。
  • 底部区域: 提供了可用的快捷键列表。
  1. 基本操作:
  • 使用箭头键在进程列表中导航。
  • 使用 t 切换显示模式,包括 cpumemdisk 等。
  • 使用 P 切换到按 CPU 使用率排序的进程列表,使用 M 切换到按内存使用率排序的列表。
  1. 颜色标识:
    atop 使用颜色标识不同类型的进程和系统资源使用情况,类似于 htop
  2. 进程操作:
  • 使用 k 键杀死选中的进程。
  • 使用 r 键重启选中的进程。
  1. 搜索进程:
  • 使用 : 键输入关键字搜索进程。
  1. 设置选项:
  • 使用 O 进入设置界面,可以配置显示选项、排序方式等。
  1. 显示磁盘和网络信息:
  • 使用 d 切换到显示磁盘信息。
  • 使用 n 切换到显示网络信息。
  1. 快捷键:

atop 提供了一系列快捷键,可以在底部区域查看。例如:

  • ? 显示帮助。
  • q 退出 atop
  1. 查看历史记录:
  • 使用 t 键可以查看系统资源的历史记录。
  1. 保存数据:
  • 使用 W 键将当前 atop 的状态保存到文件中。

注意事项:

  • atop 需要 root 权限来访问某些系统信息。
  • atop 提供了丰富的信息和功能,可以通过手册页 (man atop) 查看更详细的文档。

系统上下文切换(vmstat)

进程上下文切换(pidstatat)

软中断(top、/proc/softirqs、mpstat)

/proc/softirqs 文件提供了有关软中断(softirqs)的信息。软中断是内核用于在内核上下文中异步执行延迟工作的一种机制。/proc/softirqs 文件显示了每个软中断的统计信息。以下是使用该文件的一些详细方法:

  1. 查看 /proc/softirqs 内容:
    直接使用 cat 命令查看 /proc/softirqs 文件的内容:
cat /proc/softirqs

输出将显示软中断的统计信息,按照软中断类型和 CPU 核心分组。

  1. 软中断的列说明:
    输出的列包括:
  • CPU 核心编号: 列的第一列显示 CPU 的编号。
  • 软中断类型: 除了 CPU 列之外的列包含不同类型的软中断。
  • Counter: 每个软中断类型的计数器,表示软中断已经触发的次数。

示例如下:

CPU0       CPU1       CPU2       CPU3       
...
HI:      16693      12848       9694      15849   Hardware interrupts
...
TIMER:   35946      29293      29872      28846   Timer interrupts
...
  1. 解释软中断类型:
  • HI (Hardware interrupts): 硬中断,表示硬件设备引起的中断。
  • TIMER (Timer interrupts): 定时器中断,由系统定时器引起的中断。
  • 其他类型的软中断也可能出现,取决于系统配置和正在运行的任务。
  1. 监控软中断:
  • 如果你想监控软中断的变化,可以使用类似 watch 命令:
watch -n 1 cat /proc/softirqs

这将每秒刷新一次软中断的统计信息。

注意事项:

  • /proc/softirqs 文件提供了一种实时查看软中断统计信息的方法,用于诊断系统性能问题。
  • 软中断是内核中的一种异步执行机制,通常用于处理网络数据包、磁盘 I/O 等。
  • 在解释软中断统计时,重要的是查看相邻两次采样之间的变化,而不仅仅关注绝对值。

硬中断(vmstat、/proc/interrupts)

/proc/interrupts 文件提供了关于系统中断的详细信息,包括每个 IRQ(Interrupt Request)线路的中断请求统计。以下是使用该文件的详细方法:

  1. 查看 /proc/interrupts 内容:
    直接使用 cat 命令查看 /proc/interrupts 文件的内容:
cat /proc/interrupts

输出将显示每个 IRQ 线路上的中断请求统计,按照 CPU 核心和中断类型分组。

  1. 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]
...
  1. 解释中断类型:
  • IR-PCI-MSI: 使用 PCI MSI(Message Signaled Interrupts)机制的设备的中断。
  • edge: 使用传统的中断触发方式的设备。

其他类型的中断也可能出现,具体取决于系统硬件和正在运行的任务。

  1. 监控中断:
  • 如果你想监控中断的变化,可以使用类似 watch 命令:
watch -n 1 cat /proc/interrupts

这将每秒刷新一次中断统计信息。

注意事项:

  • /proc/interrupts 文件提供了实时查看系统中断统计信息的方法,用于诊断系统性能问题。
  • 中断请求是硬件设备(如网卡、磁盘控制器)向 CPU 发送的信号,通知 CPU 某事件已发生需要处理。
  • 通过监控中断,可以了解系统中哪些设备产生了中断,以及这些中断是否超过了正常范围,有助于识别可能的性能问题。

网络(dstat、sar、tcpdump)

dstat 是一个用于实时监控系统资源使用情况的工具,它可以提供关于 CPU、内存、磁盘、网络等方面的详细统计信息。以下是 dstat 的一些常用用法:

  1. 基本用法:
    最简单的使用方法是在终端中直接运行 dstat 命令:
dstat

这将显示默认情况下的一些基本性能统计信息,包括 CPU 使用率、内存使用率、磁盘 I/O 等。

  1. 指定显示内容:
    使用 -c-m-d 等选项可以指定要显示的内容。例如,显示 CPU 使用率和内存使用情况:
dstat -c -m
  1. 实时更新间隔:
    使用 -t 选项可以指定 dstat 的刷新间隔,单位为秒。例如,每隔 2 秒更新一次:
dstat -t 2
  1. 显示网络信息:
    使用 -n 选项可以显示网络相关的统计信息:
dstat -n
  1. 显示磁盘信息:
    使用 -d 选项可以显示磁盘 I/O 相关的信息:
dstat -d
  1. 显示系统信息:
    使用 -s 选项可以显示系统相关的信息,包括系统调用、中断等:
dstat -s
  1. 显示进程信息:
    使用 -p 选项可以显示进程相关的信息,包括进程 CPU、内存占用等:
dstat -p
  1. 保存输出到文件:
    使用 --output 选项可以将 dstat 的输出保存到文件中,以便后续分析:
dstat --output dstat_output.csv

这将把输出保存到 dstat_output.csv 文件中。

  1. 显示颜色化输出:
    使用 --color 选项可以启用颜色化的输出,提高可读性:
dstat --color

颜色化输出将以不同颜色区分不同的统计信息。

  1. 显示帮助信息:
    如果需要查看更多选项和用法,可以使用 --help 选项:
dstat --help

dstat 提供了丰富的选项和灵活的配置,可以根据需要监控系统的不同方面。在使用时,可以根据具体的需求选择合适的选项组合。

tcpdump 是一个网络抓包工具,用于捕获和分析网络数据包。以下是一些常见的 tcpdump 用法和选项:

  1. 基本用法:
    最简单的 tcpdump 命令用法是:
tcpdump

这将捕获系统上的所有网络接口的数据包。

  1. 指定网络接口:
    使用 -i 选项可以指定要监听的网络接口。例如,监听 eth0 接口:
tcpdump -i eth0
  1. 过滤特定主机或网络:
    使用过滤器可以限制捕获的数据包。例如,只捕获源或目标是特定 IP 地址的数据包:
tcpdump host 192.168.1.1

或者只捕获特定网络的数据包:

tcpdump net 192.168.1.0/24
  1. 保存到文件:
    使用 -w 选项可以将捕获的数据包保存到文件中:
tcpdump -w capture.pcap

这将把捕获的数据包保存到 capture.pcap 文件中,后续可以使用其他工具进行分析。

  1. 读取保存的文件:
    使用 -r 选项可以读取之前保存的数据包文件:
tcpdump -r capture.pcap
  1. 指定端口:
    使用 port 关键字可以捕获特定端口的数据包:
tcpdump port 80

这将捕获目标或源端口是 80 的数据包。

  1. 显示更多详细信息:
    使用 -v-vv-vvv 选项可以增加详细程度,显示更多的信息:
tcpdump -vv
  1. 显示 ASCII 数据:
    使用 -A 选项可以显示捕获的数据包的 ASCII 数据:
tcpdump -A
  1. 显示时间戳:
    使用 -t 选项可以显示每个数据包的时间戳:
tcpdump -t
  1. 显示端口号对应的服务名称:
    使用 -n 选项可以防止 tcpdump 尝试将端口号转换为服务名称:
tcpdump -n
  1. 显示 ICMP 报文:
    使用 icmp 关键字可以捕获 ICMP 报文:
tcpdump icmp
  1. 显示特定协议:
    使用 proto 关键字可以捕获特定协议的数据包。例如,只显示 TCP 数据包:
tcpdump proto tcp

或只显示 UDP 数据包:

tcpdump proto udp

这只是 tcpdump 的一些常见用法,该工具提供了丰富的选项和过滤器,可以根据需要进行更复杂的网络数据包分析。

I/O(dstat、sar)

CPU个数(/proc/cpuinfo、lscpu)

/proc/cpuinfo 文件包含有关系统上的每个 CPU 的信息。以下是使用 /proc/cpuinfo 的一些常见用法:

  1. 查看 CPU 信息:
    使用 cat 命令可以查看整个 /proc/cpuinfo 文件的内容:
cat /proc/cpuinfo

这将显示有关每个 CPU 的详细信息,包括型号、速度、缓存等。

  1. 显示 CPU 的物理核数:
    使用 grep 命令可以筛选物理核心的数量:
grep "physical id" /proc/cpuinfo | sort -u | wc -l

这将显示系统中的物理 CPU 数量。

  1. 显示 CPU 的逻辑核数:
    使用 grep 命令可以筛选逻辑核心的数量:
grep "processor" /proc/cpuinfo | wc -l

这将显示系统中的逻辑 CPU 数量。

  1. 显示 CPU 的型号和速度:
    使用 grep 命令可以筛选 CPU 的型号和速度信息:
grep "model name" /proc/cpuinfo
grep "cpu MHz" /proc/cpuinfo

这将显示每个 CPU 的型号和速度。

  1. 显示 CPU 缓存信息:
    使用 grep 命令可以筛选 CPU 缓存信息:
grep "cache size" /proc/cpuinfo

这将显示每个 CPU 的缓存大小。

  1. 显示 CPU 支持的特性:
    使用 grep 命令可以筛选 CPU 支持的特性:
grep "flags" /proc/cpuinfo

这将显示每个 CPU 支持的特性,如 SSE、SSE2、AVX 等。

  1. 显示 CPU 架构:
    使用 grep 命令可以筛选 CPU 的架构信息:
grep "arch" /proc/cpuinfo

这将显示每个 CPU 的架构,如 x86_64。

  1. 显示 CPU 是否支持虚拟化:
    使用 grep 命令可以查看 CPU 是否支持虚拟化:
grep "vmx" /proc/cpuinfo

如果输出中包含 “vmx”,则表示 CPU 支持虚拟化。

这些是 /proc/cpuinfo 文件的一些常见用法,可以根据具体需求筛选和显示所需的信息。

lscpu 是一个用于显示有关 CPU 架构信息的命令。以下是一些常见用法:

  1. 查看 CPU 信息:
lscpu

这将显示有关 CPU 的详细信息,包括架构、型号、速度、缓存、核心数等。

  1. 显示 CPU 架构:
lscpu | grep "Architecture"

这将仅显示 CPU 的架构信息,如 x86_64。

  1. 显示 CPU 型号和速度:
lscpu | grep "Model name"
lscpu | grep "CPU MHz"

这将显示 CPU 的型号和速度信息。

  1. 显示 CPU 缓存信息:
lscpu | grep "L3 cache"

这将显示 CPU 的 L3 缓存大小。

  1. 显示 CPU 核心数:
lscpu | grep "Core(s) per socket"

这将显示每个 CPU 插槽的核心数。

  1. 显示 CPU 线程数(逻辑核数):
lscpu | grep "Thread(s) per core"

这将显示每个核心的线程数,也即逻辑核数。

  1. 显示 CPU 插槽数:
lscpu | grep "Socket(s)"

这将显示系统中的 CPU 插槽数。

  1. 显示 NUMA 节点数:
lscpu | grep "NUMA node(s)"

这将显示系统中的 NUMA 节点数。

  1. 显示 CPU 是否支持虚拟化:
lscpu | grep "Virtualization"

这将显示 CPU 是否支持虚拟化。

  1. 显示 CPU 支持的指令集:
lscpu | grep "Flags"

这将显示 CPU 支持的指令集,如 SSE、SSE2、AVX 等。

这些是 lscpu 命令的一些常见用法,你可以根据具体需求选择查看所需的信息。

事件剖析(perf、execsnoop)

perf 是 Linux 系统中性能分析的工具,用于收集性能事件和生成性能分析报告。以下是一些常见用法:

  1. 收集系统性能事件:
perf record -a -g -- sleep 5

这将在系统上运行 sleep 命令 5 秒钟,期间收集所有进程的性能事件。-g 选项会同时收集调用图。

  1. 查看性能报告:
perf report

这将生成一个性能报告,显示系统上收集到的性能事件信息。你可以使用箭头键和回车键来浏览报告。

  1. 显示系统的 CPU 周期:
perf stat sleep 1

这将运行 sleep 命令 1 秒,并显示系统的 CPU 周期统计信息。

  1. 显示某个命令的性能统计:
perf stat <command>

用你想要分析性能的具体命令替代 <command>,这将显示该命令的性能统计信息。

  1. 查看 CPU 指令:
perf record -e instructions -c 10000 -a

这将收集所有进程的指令计数事件,每隔 10000 个事件报告一次。

  1. 查看缓存命中率:
perf stat -e cache-references,cache-misses <command>

这将运行 <command> 命令并显示缓存引用和缓存失效的统计信息。

  1. 记录 CPU 周期计数:
perf record -e cycles -a

这将收集所有进程的 CPU 周期计数信息。

  1. 显示函数调用图:
perf record -g -p <PID>

这将在指定的进程上启动性能事件收集,并包括函数调用图。

  1. 显示指定进程的性能信息:
perf top -p <PID>

这将显示指定进程的实时性能信息,类似于 top 命令。

  1. 生成火焰图:
perf script | stackcollapse-perf.pl | flamegraph.pl > flamegraph.svg

这将生成火焰图,用于可视化系统中的函数调用情况。

这些只是 perf 工具的一些基本用法,你可以根据具体的需求和关注点选择不同的性能事件进行分析。

execsnoopsysdig 工具的一部分,用于跟踪系统上的进程启动事件。以下是一些常见用法:

  1. 基本用法:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve

这将实时显示执行 execve 系统调用的进程信息,包括用户名、进程 ID、进程名和事件类型。

  1. 按用户名过滤:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve and user.name=your_username

用你的用户名替代 your_username,这样可以只显示特定用户的进程启动信息。

  1. 按进程名过滤:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve and proc.name=your_process

用你的进程名替代 your_process,这样可以只显示特定进程的启动信息。

  1. 按进程 ID 过滤:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve and proc.pid=your_pid

用你的进程 ID 替代 your_pid,这样可以只显示特定进程的启动信息。

  1. 输出到文件:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve > execsnoop.log

这将将输出重定向到文件,以便稍后分析。

  1. 按照时间戳排序:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve | sort -k1

这将按照时间戳排序输出。

  1. 显示执行命令的完整路径:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type %proc.args" evt.type=execve

这将显示执行命令的完整路径。

请注意,使用 sysdig 工具需要系统具有相应的权限。在上述命令中,sudo 用于获取必要的权限。确保在使用此工具时谨慎操作,以免产生不必要的风险。execsnoopsysdig 工具的一部分,用于跟踪系统上的进程启动事件。以下是一些常见用法:

  1. 基本用法:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve

这将实时显示执行 execve 系统调用的进程信息,包括用户名、进程 ID、进程名和事件类型。

  1. 按用户名过滤:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve and user.name=your_username

用你的用户名替代 your_username,这样可以只显示特定用户的进程启动信息。

  1. 按进程名过滤:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve and proc.name=your_process

用你的进程名替代 your_process,这样可以只显示特定进程的启动信息。

  1. 按进程 ID 过滤:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve and proc.pid=your_pid

用你的进程 ID 替代 your_pid,这样可以只显示特定进程的启动信息。

  1. 输出到文件:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve > execsnoop.log

这将将输出重定向到文件,以便稍后分析。

  1. 按照时间戳排序:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type" evt.type=execve | sort -k1

这将按照时间戳排序输出。

  1. 显示执行命令的完整路径:
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3evt.type %proc.args" evt.type=execve

这将显示执行命令的完整路径。

请注意,使用 sysdig 工具需要系统具有相应的权限。在上述命令中,sudo 用于获取必要的权限。确保在使用此工具时谨慎操作,以免产生不必要的风险。