一、系统管理与性能监视命令
1.1 chkconfig
1.1.1 介绍
chkconfig
是 Red Hat、CentOS 和其他基于 RPM 的 Linux 发行版中的一个命令,用于管理系统服务的启动和停止
1.1.2 使用方法
bash
chkconfig [--add][--del][--list][系统服务]
chkconfig [--level <等级代号>][系统服务][on/off/reset]
1.1.3 参数详解
--add
:添加服务到 chkconfig 管理中。--del
:从 chkconfig 管理中删除服务。--list
:列出所有服务的启动状态。--level <等级代号>
:指定要更改的运行级别,如 3、4、5 等。on
、off
:在服务对应的运行级别上启动或停止服务。reset
:重置服务的启动信息到系统默认值。
1.1.4 运行级别
- 0:关机。
- 1:单用户模式,用于系统维护。
- 2:多用户模式,没有 NFS 支持。
- 3:完整的多用户模式,有 NFS 支持,通常作为默认的运行级别。
- 4:未定义,用户可以根据需要自定义。
- 5:图形界面模式,通常用于启动 X Window 系统。
- 6:重启系统。
1.1.5 注意事项
chkconfig
命令不会立即启动或停止服务;它只是更改服务的启动设置。要立即启动或停止服务,可以使用service
或systemctl
命令。- 在使用
chkconfig
更改服务状态时,请确保你了解这些更改对系统的影响,并谨慎操作。 - 不是所有的服务都适合在所有运行级别自动启动。根据系统的需求和安全策略,合理配置服务的启动级别是非常重要的。
1.2 vmstat
1.2.1 介绍
vmstat
是一个强大的系统监视工具,用于显示关于虚拟内存统计、进程、内存、I/O 等系统整体运行状态的信息
1.2.2 使用方法
bash
vmstat [options] [delay [count]]
1.2.3 参数详解
-a
或--active
:显示活跃和非活跃内存。-f
或--forks
:显示从系统启动至今的 fork 数量,包括 fork、vfork 和 clone 系统调用,这相当于创建的任务总数。-m
:显示 slabinfo。-n
:只在开始时显示一次各字段名称。如果不指定此选项,将只显示更新的统计信息。-d
:显示磁盘相关的统计信息。-p disk partition
:显示指定磁盘分区的 I/O 统计信息。-S unit
:以指定的单位(如 K、M)显示信息。-s
:显示一些事件(如开机到目前为止)导致的内存变化情况列表。
1.2.4 字段说明
vmstat
的输出通常包含以下字段:
procs
:进程相关信息。r
:等待运行中的进程数量。b
:不可被唤醒的进程数量。
memory
:内存相关信息。swpd
:交换出的虚拟内存大小。free
:空闲的物理内存大小。buff
:用作缓冲的内存大小。cache
:用作缓存的内存大小。inact
:非活动内存大小。active
:活动内存大小。
swap
:交换空间相关信息。si
:从交换空间换入的内存量(单位:KB/s)。so
:换出到交换空间的内存量(单位:KB/s)。
io
:输入/输出相关信息。bi
:块设备接收的块数(单位:块/s)。bo
:块设备发送的块数(单位:块/s)。
system
:系统相关信息。in
:每秒中断数,包括时钟中断。cs
:每秒上下文切换数。
cpu
:CPU相关信息。us
:用户空间占用CPU百分比。sy
:内核空间占用CPU百分比。id
:空闲CPU百分比。wa
:等待IO的CPU百分比。st
:被虚拟机偷走的CPU百分比。
1.2.5 常见使用案例
1.2.5.1 显示虚拟内存使用情况的常规统计信息
bash
vmstat
1.2.5.2 每秒报告一次统计信息,总共报告3次
bash
vmstat 1 3
1.2.5.3 使用 -a
选项以显示活跃和非活跃内存替代缓冲和缓存
bash
vmstat -a
1.3 mpstat
1.3.1 介绍
mpstat
是Multiprocessor Statistics的缩写,是一个实时系统监控工具,用于报告与CPU相关的一些统计信息
1.3.2 使用方法
bash
mpstat [-P {|ALL}] [interval [count]]
1.3.3 参数解析
- 当没有参数时,
mpstat
显示系统启动以后所有信息的平均值。 - 有
interval
时,第一行的信息是自系统启动以来的平均信息。 -A
:此选项等效于mpstat -I ALL -u -P ALL
,用于报告所有中断统计信息和CPU使用状态。-I {SUM | CPU | ALL}
:报告中断统计信息。SUM
关键字报告每个处理器的中断总数;CPU
关键字显示CPU或CPU每秒接收的每个中断的数量;ALL
关键字显示所有中断统计信息。-u
:显示CPU的使用状态,包括用户进程、内核进程、nice值为负的进程、等待I/O的进程等所占用的CPU百分比。-V
:显示版本信息并退出。
1.3.4 输出信息
mpstat
的输出通常包括CPU处理器ID、用户进程使用CPU的百分比、内核进程使用CPU的百分比、等待I/O的CPU时间百分比等。此外,还可以显示当前值和interval
时间前的值,以便于比较和分析系统性能的变化
1.3.5 常见使用案例
1.3.5.1 查看所有CPU的平均状况信息
bash
mpstat
1.3.5.2 每5秒产生一个报告,总共产生2个,显示所有CPU的信息
bash
mpstat -P ALL 5 2
1.3.5.3 显示特定CPU(例如CPU 0)的使用情况
bash
mpstat -P 0
1.3.6 注意事项
mpstat
的输出信息对于系统管理员和开发者来说非常有用,可以帮助他们了解CPU的使用情况和性能瓶颈。- 在使用
mpstat
时,建议结合其他系统监控工具(如vmstat
、iostat
等)一起使用,以获得更全面的系统性能分析。 - 在分析
mpstat
的输出时,需要注意各个CPU之间的负载平衡情况,以及是否存在某个CPU过载或空闲的情况,这有助于进行针对性的性能优化。
1.4 sar
1.4.1 介绍
sar
是系统活动报告(System Activity Reporter)的缩写,也是 sysstat
软件包中的一个重要工具
1.4.2 使用方法
bash
sar [options] [-A] [-o file] [interval] [count]
1.4.3 参数详解
-u
:报告CPU使用情况。-r
:报告内存和交换空间使用情况。-d
:报告磁盘I/O活动。-b
:报告块设备I/O活动。-v
:报告进程创建和上下文切换活动。-n
:报告网络I/O统计信息。-q
:报告运行队列长度和加载平均。
1.4.4 输出内容
sar
的输出内容根据所选的报告类型而定,但通常包括各种性能指标的时间序列数据。例如,对于CPU使用情况报告,可能会显示用户空间、内核空间、空闲等状态的百分比
1.4.5 常见使用案例
1.4.5.1 每5秒报告一次CPU使用情况,共报告3次
bash
sar -u 5 3
1.4.5.2 将内存使用情况报告保存到文件中
bash
sar -r -o memory_report.txt 60 10
1.4.5.3 报告所有活动,并每10分钟报告一次,无限次循环
bash
sar -A 600
1.4.6 注意事项
sar
默认会收集并报告从系统启动以来的统计数据。如果指定了interval
和count
,则会报告指定时间间隔和次数的数据。sar
可以实时报告系统活动,也可以从历史数据中生成报告。这取决于是否有可用的历史数据(通常通过sysstat
的数据收集机制生成)。- 使用
sar
时,应注意选择合适的报告类型和选项,以便获取所需的信息。同时,应结合其他系统监控工具,如vmstat
、iostat
等,进行综合分析。
1.5 ipcs
1.5.1 介绍
ipcs
是 Linux 系统中用于报告有关进程间通信(IPC)设施的信息的命令
1.5.2 使用方法
bash
ipcs [-asmq] [-tclup]
1.5.3 参数详解
-a
:显示所有类型的 IPC 设施信息。-s
:显示信号量信息。-m
:显示共享内存信息。-q
:显示消息队列信息。-t
:显示 IPC 设施的创建时间和最后操作时间。-c
:显示 IPC 设施的创建者。-l
:显示最大限制值。-u
:显示未使用的 IPC 设施。-p
:显示进程的 PID 和与 IPC 设施关联的命令行。
1.5.4 输出内容
ipcs
的输出通常包括 IPC 设施的键值(key)、ID、权限、所有者、组、创建时间、最后操作时间、附加的进程数以及消息数(对于消息队列)或字节数(对于共享内存)
1.5.5 常见使用案例
1.5.5.1 显示所有类型的 IPC 设施信息
bash
ipcs -a
1.5.5.2 仅显示消息队列信息
bash
ipcs -q
1.5.5.3 显示信号量和它们的创建者
bash
ipcs -sc
1.5.5.4 显示共享内存及其关联的进程
bash
ipcs -mp
1.5.6 注意事项
ipcs
命令需要足够的权限才能查看所有 IPC 设施的信息。普通用户可能只能看到他们自己的 IPC 设施。- 当使用
ipcs
查看 IPC 设施时,应注意检查设施的权限设置,以确保它们不会被未经授权的用户访问。 - 在某些情况下,过多的 IPC 设施可能会导致系统资源耗尽。使用
ipcs
可以帮助识别这些潜在问题。
1.6 ipcrm
1.6.1 介绍
ipcrm
是 Linux 系统中用于删除进程间通信(IPC)设施的命令
1.6.2 使用方法
bash
ipcrm [-q m s] id
1.6.3 参数详解
-q
:删除指定的消息队列。-m
:删除指定的共享内存段。-s
:删除指定的信号量集。
1.6.4 常见使用案例
1.6.4.1 删除消息队列,其 ID 为 12345
bash
ipcrm -q 12345
1.6.4.2 删除共享内存段,其 ID 为 67890
bash
ipcrm -m 67890
1.6.4.3 删除信号量集,其 ID 为 34567
bash
ipcrm -s 34567
1.6.5 注意事项
- 在删除 IPC 设施之前,请确保没有任何进程正在使用它。否则,删除操作可能会失败或导致不可预测的行为。
- 只有 IPC 设施的拥有者或具有适当权限的用户才能删除它。
- 在某些情况下,系统可能会自动删除不再使用的 IPC 设施。但是,为了确保资源的及时释放和避免潜在问题,最好手动删除不再需要的 IPC 设施。
1.7 strace
1.7.1 介绍
strace
是一个在 Linux 系统上非常有用的工具,它用于跟踪系统调用和信号
1.7.2 使用方法
bash
strace [options] command [arg...]
1.7.3 参数详解
-e expr
:只跟踪指定的系统调用或事件。-o file
:将输出保存到文件中,而不是打印到标准输出。-p pid
:跟踪已经运行的进程。-f
:跟踪由目标进程创建的子进程。-tt
:在输出中显示时间戳。-v
:显示详细的系统调用信息。
1.7.4 输出内容
strace
的输出通常包括系统调用的名称、参数、返回值以及任何相关的错误消息。这些信息对于理解程序如何与操作系统交互以及查找潜在问题非常有帮助
1.7.5 常见使用案例
1.7.5.1 跟踪一个简单的命令(如 ls
)的系统调用
bash
strace ls
1.7.5.2 将输出保存到文件
bash
strace -o ls_trace.txt ls
1.7.5.3 只跟踪与文件操作相关的系统调用
bash
strace -e trace=file ls
1.7.5.4 跟踪一个已经运行的进程(假设其 PID 为 1234)
bash
strace -p 1234
1.7.6 注意事项
strace
会增加程序的运行时间,因为它需要插入额外的代码来跟踪系统调用。因此,在生产环境中使用时要小心。strace
的输出可能非常庞大,特别是在跟踪复杂的程序时。使用-e
选项来限制跟踪范围通常是有帮助的。- 理解系统调用和它们在程序中的作用是分析
strace
输出的关键。如果你不熟悉这些概念,可能需要查阅相关文档或资源。
1.8 ltrace
1.8.1 介绍
ltrace
是一个在 Linux 和其他类 Unix 系统上用于跟踪进程调用库函数情况的工具
1.8.2 使用方法
bash
ltrace [option...] [command [arg...]]
1.8.3 参数详解
-a
:对齐具体某个列的返回值。-c
:计算时间和调用,并在程序退出时打印摘要。-d
:打印调试信息。-e
:改变跟踪的事件。-f
:跟踪子进程。-h
:打印帮助信息。-i
:打印指令指针,当库调用时。-l
:只打印某个库中的调用。-o
或--output=file
:把输出定向到文件。-p PID
:附着在值为 PID 的进程号上进行ltrace
。-r
:打印相对时间戳。-S
:显示系统调用(尽管ltrace
主要关注库函数调用,但此选项允许同时显示系统调用)。-T
:输出每个调用过程的时间开销。
1.8.4 常见使用案例
1.8.4.1 跟踪一个简单命令(如 ls
)的库函数调用
bash
ltrace ls
1.8.4.2 将输出保存到文件
bash
ltrace -o ls_ltrace.txt ls
1.8.4.3 只跟踪特定库中的调用(例如,只跟踪 libc.so.6
中的调用)
bash
ltrace -l libc.so.6 ls
1.8.4.4 附着到一个已经运行的进程(假设其 PID 为 1234)上进行跟踪
bash
ltrace -p 1234
1.8.5 注意事项
ltrace
的运行可能会对程序性能产生一定影响,因为它需要插入额外的代码来跟踪库函数调用。因此,在生产环境中使用时需要谨慎。ltrace
的输出可能非常详细,特别是在跟踪复杂的程序时。使用适当的选项来限制输出范围通常是有帮助的。- 理解库函数和它们在程序中的作用是分析
ltrace
输出的关键。如果你不熟悉这些概念,可能需要查阅相关文档或资源。