在 Linux 系统中,有许多命令和工具可以帮助运维人员监控系统状态、性能以及定位问题。以下是一些常用的运维相关命令:
- top: 如前所述,实时显示进程的资源占用情况。
- htop: 类似于
top
,但提供了一个更为用户友好的界面,支持颜色显示和滚动。 - vmstat: 报告有关系统进程、内存、分页、块 IO、陷阱和 CPU 活动的信息。
- iostat: 用于监控系统输入输出设备和分区的性能。
- free: 显示内存的使用情况,包括物理内存、交换内存、缓冲和缓存。
- df: 报告文件系统的磁盘空间使用情况。
- du: 估算文件或目录所占用的磁盘空间。
- lsof: 列出被进程打开的文件,可以用来查找哪个进程占用了磁盘空间或端口。
- netstat: 显示网络连接、路由表、接口状态等网络相关信息。
- ss: 与
netstat
类似,用来查看和监控网络连接。 - tcpdump: 用于捕获和分析网络流量数据包。
- nmap: 网络探测和安全扫描工具,用于探测网络上的主机和服务。
- sar: 系统活动报告工具,可以回顾历史数据,了解系统在过去的表现。
- mpstat: 报告 CPU 的使用情况。
- pidstat: 报告特定 PID 或所有进程的 CPU、内存、I/O 等统计信息。
- dmesg: 显示或控制内核环形缓冲区的内容,通常用于诊断硬件和驱动问题。
- strace: 跟踪系统调用和信号,用于调试进程执行时的操作。
- uptime: 显示系统已运行的时间以及平均负载。
- ps: 报告当前系统的进程状态。
- journalctl: 用于查询和显示从 systemd 日志开始以来的消息。
当 Linux 机器告警时,可以采取以下步骤快速定位问题:
- 查看系统日志:使用
dmesg
和journalctl
检查是否有硬件故障或系统错误。 - 检查资源占用:使用
top
或htop
确定哪些进程占用了过多的 CPU 或内存资源。 - 检查磁盘空间:使用
df
和du
命令检查磁盘空间是否不足。 - 检查网络连接:使用
netstat
、ss
和nmap
查看网络连接和端口状态。 - 分析性能数据:使用
vmstat
、iostat
、mpstat
和sar
进行更深入的性能分析。 - 监控进程和系统调用:使用
ps
、pidstat
和strace
监控特定进程的行为和系统调用。 - 检查内存使用:使用
free
和vmstat
查看内存使用情况。
每个命令都有其详细的参数和用法,具体问题需要结合具体命令的输出和系统日志进行综合分析。在处理告警和问题时,可能需要根据具体情况组合使用这些命令
当然,我会选择几个经常用于系统监控和故障排查的命令进行详细介绍:
top
top
命令是最常用的性能监控工具之一,它提供了一个实时更新的视图,显示系统中当前活动的进程以及它们对 CPU 和内存的使用情况。通过
top
,你可以看到哪些进程占用了最多的资源,并可以进行进程管理,如改变优先级或终止进程。此外,它还显示了系统的负载平均值、正在运行的任务数量、CPU 状态等信息。
使用方法:
top
在
top
的界面中,你可以使用键盘命令进行交互,例如按
P
来按 CPU 使用率排序,按
M
按内存使用率排序,或者按
k
终止一个进程。
iostat
iostat
命令用于监视系统的 I/O 设备负载。它可以报告 CPU 统计和所有分区的输入/输出统计。这个工具对于检测系统的磁盘瓶颈非常有用。
使用方法:
iostat
你可以使用
-x
选项显示扩展的统计信息,或者使用
-c
仅显示 CPU 使用率,
-d
仅显示磁盘使用情况,或是指定刷新间隔和次数,例如每 2 秒刷新一次,共刷新 5 次:
iostat -x 2 5
vmstat
vmstat
(虚拟内存统计) 命令报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的信息。这个工具对于理解系统上的工作负载特征非常有用。
使用方法:
vmstat 1
上述命令会每秒刷新一次输出。
vmstat
的输出包括内存、交换、IO 和 CPU 部分的统计数字。
netstat
netstat
命令显示网络连接、路由表、接口统计信息等,是用于检查网络配置和活动的工具。
使用方法:
netstat -tulnp
选项
-tulnp
的含义如下:
-t
: 显示 TCP 连接。
-u
: 显示 UDP 连接。
-l
: 仅显示监听套接字(通常用于查找运行的服务)。
-n
: 显示 IP 地址而不是解析的主机名。
-p
: 显示哪个进程正在使用套接字。
dmesg
dmesg
命令用于打印和控制内核环形缓冲区的消息,它通常用来检测硬件相关的问题和驱动程序消息。
使用方法:
dmesg | less
使用
| less
可以让你方便地浏览消息。你也可以使用
-T
选项来查看人类可读的时间戳。
lsof
lsof
命令列出当前系统打开文件的信息。由于在 Unix 和类 Unix 系统中,几乎一切都是文件(包括设备和网络套接字),
lsof
是非常强大的排查工具。
使用方法:
lsof -i tcp:22
上述命令会列出所有使用 TCP 端口 22(通常是 SSH 服务)的进程。
版权归原作者 兔老大RabbitMQ 所有, 如有侵权,请联系我们删除。