前言
当管理Linux系统时,了解常用监控工具命令是至关重要的。本文精选了一些实用的技巧,帮助你轻松监控系统资源、优化性能、及时发现问题。无论你是新手还是有经验的管理员,都能从中获益良多。不容错过的Linux系统管理利器,赶快阅读吧!
性能监控命令
top
top命令是Linux中常用的性能监控工具,它可以实时显示系统中各个进程的资源占用状况,包括CPU、内存等。top命令提供了一个实时的视图,显示系统当前的活跃进程,并允许用户进行交互,对进程执行各种操作。
基本语法:
css
top [options]
常用可选参数:
- -d:指定刷新间隔,单位为秒。
- -p:监控特定的PID。
- -n:运行top命令时显示几次更新后退出。
- -u:仅显示特定用户的进程。
- -h:显示帮助信息。
- -o:按某一字段排序,例如-o %MEM按内存使用率排序。
执行top命令后,实际上也可以执行一些交互命令:
- Shift + P:按CPU使用率排序。
- Shift + M:按内存使用率排序。
- k:终止一个进程。
- f:添加或删除显示的列。
- t:打开或关闭显示图形。
- 1:显示所有CPU的状况,而不是总体平均值。
比如:我要杀死进程id是10789的vsftpd服务进程,可以直接输入k,会进入下面的交互界面,再输入vsftpd进程的进程id10789,按enter键,即可杀死vsftpd服务进程;
下面是其他的一些简单使用示例:
简单启动:直接在终端中输入 top,就可以显示当前系统的动态进程以及资源使用情况。
css
top
改变更新速率:使用 top -d 5 来设定每5秒刷新一次。
css
top -d 5
查看特定用户的进程:如果需要查看用户root的进程,可以使用 top -u root。
css
top -u root
监控特定进程:假设要监控PID为10789的进程,可以使用 top -p 10948,top命令中最常用也就是这个了。
css
top -p 10948
对上面的输出内容的解读:
top - 16:56:50 up 4 days, 21:02, 2 users, load average: 0.00, 0.01, 0.05
- 系统当前时间为 16:56:50,系统已经运行了 4 天 21 小时 2 分钟,有 2 个用户登录。
- 负载平均值(load average)显示了过去 1 分钟、5 分钟和 15 分钟内系统的平均负载情况。
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
- 总共有 1 个任务(进程)正在运行。
- 没有正在运行的任务,有 1 个任务处于睡眠状态,没有被停止的任务或僵尸进程。
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
- CPU 使用情况的统计信息:
- us:用户空间占用 CPU 时间的百分比。
- sy:内核空间占用 CPU 时间的百分比。
- ni:用于nice优先级调整过的用户进程占用CPU时间的百分比。
- id:CPU 空闲时间的百分比。
- wa:等待输入输出完成而花费的CPU时间百分比。
- hi:硬中断(Hardware IRQ)占用 CPU 时间的百分比。
- si:软中断(Software IRQ)占用 CPU 时间的百分比。
- st:由于虚拟化导致的被偷取时间的百分比。
KiB Mem : 2010272 total, 1363512 free, 213272 used, 433488 buff/cache
- 物理内存使用情况:
- 总共 2010272 KB 的物理内存。
- 空闲内存为 1363512 KB。
- 已使用内存为 213272 KB。
- 缓冲区/缓存占用的内存为 433488 KB。
KiB Swap: 2097148 total, 2097148 free, 0 used. 1637812 avail Mem
- 交换空间(swap)使用情况:
- 总共 2097148 KB 的交换空间。
- 空闲的交换空间为 2097148 KB。
- 没有被使用的交换空间。
- 可用于内存的交换空间大小为 1637812 KB。
进程信息:
- PID:进程 ID。
- USER:进程所属用户。
- PR:进程的优先级。
- NI:进程的 nice 值。
- VIRT:进程使用的虚拟内存量(单位为 KB)。
- RES:进程使用的物理内存量(单位为 KB)。
- SHR:进程使用的共享内存量(单位为 KB)。
- %CPU:进程占用 CPU 的百分比。
- %MEM:进程占用内存的百分比。
- TIME+:进程运行的累计时间。
- COMMAND:进程的命令名。
htop
htop 是一个类似于 Linux 系统中的 top 命令的工具,用于显示系统中运行的进程的实时信息。与 top 不同的是,htop 提供了更加直观和友好的界面,可以通过鼠标或键盘快捷键进行交互操作,显示的信息也更加详细和易读。htop 可以显示 CPU、内存、swap 等资源的使用情况,同时还可以方便地对进程进行排序、搜索和管理。
htop 并不是所有 Linux 发行版的默认安装包,因此可能需要单独安装它。可以按照以下步骤在常见的 Linux 发行版上安装 htop:
对于 Ubuntu 或 Debian 等基于 apt 的系统:
sql
sudo apt update sudo
apt install htop
对于 CentOS 或 RHEL 等基于 yum 的系统:
sudo yum install htop
一旦安装完成,就可以直接使用了。
使用 htop的方法很简单:
打开终端窗口输入 htop 命令,并按下 Enter 键
htop
然后就可以看到如上图的输出内容:实时进程信息,包括 CPU 和内存的占用情况等。
对于htop输出信息中各列的解读:
- PID:进程的ID(Process ID)。
- USER:启动进程的用户。
- PRI:进程的优先级。
- NI:nice值。用于指定进程的优先级,负值表示高优先级,正值表示低优先级。
- VIRT:进程使用的虚拟内存大小(包括进程使用的共享库、映射的文件等)。
- RES:进程使用的物理内存大小(Resident Set Size)。
- SHR:进程使用的共享内存大小。
- S:进程的状态(运行、睡眠、停止等)。
- %CPU:进程占用CPU的百分比。
- %MEM:进程占用内存的百分比。
- TIME+:进程运行的累计CPU时间。
- COMMAND:启动进程的命令行。
还可以使用键盘快捷键进行操作:你可以使用键盘上的不同按键来进行排序、筛选和管理进程。例如:
- 使用 ↑ 和 ↓ 键来上下移动光标选择进程。
- 使用 F6 键可以根据不同的标准对进程进行排序。
- 使用 F9 键可以选择发送信号给选定的进程。
- 使用 Space 键可以选中或取消选中进程。
- 使用 q 键可以退出 htop。
free
显示系统内存的使用情况,包括物理内存和交换空间的使用情况。通过free 命令可以快速了解系统内存的分配和利用情况。
基本用法:
在终端中输入 free 命令即可显示系统当前的内存使用情况。默认情况下,free 命令会显示以字节为单位的内存大小。
输出解释:
- total:总内存大小。
- used:已使用的内存大小。
- free:空闲的内存大小。
- shared:被共享的内存大小。
- buff/cache:缓冲区和缓存区的内存大小。
- available:可用内存大小(该值考虑了缓冲区和缓存区)。
如果配合free的可选参数选项,效果更好:
- -h:以人类可读的方式显示内存大小,以 K、M、G 等单位表示。
- -b、-k、-m、-g:指定内存大小的单位,分别表示字节、KB、MB、GB。
- -t 或 --total:显示总内存使用情况,包括已使用、空闲和缓冲区 + 缓存区的总和。
- -s [秒数]:持续显示内存使用情况,每隔指定秒数更新一次。
示例:
显示系统当前的内存使用情况(以字节为单位)
c
free
以人类可读的方式显示内存使用情况
c
free -h
显示总内存使用情况,包括已使用、空闲和缓冲区 + 缓存区的总和
c
free -t
持续显示内存使用情况,每 5 秒更新一次
c
free -s 5
vmstat
用于显示系统的虚拟内存状态,包括进程、内存、磁盘活动等信息。vmstat 可以提供有关系统整体性能的详细统计数据。
css
vmstat [options] [delay [count]]
- options:可选参数,用于指定输出格式或其他选项。
- delay:指定两次采样之间的时间间隔(单位为秒)。
- count:指定显示的采样次数。
常见的vmstat选项包括:
- -a:显示活动和非活动内存的统计信息。
- -s:显示内存、磁盘、IO、中断、上下文交换等的统计信息。
- -d:显示磁盘IO统计信息。
- -p [disk|partition]:显示分区的IO统计信息。
示例用法:
显示系统整体的虚拟内存统计信息。
vmstat
每隔1秒显示一次虚拟内存统计信息。
vmstat 1
每隔5秒显示一次虚拟内存统计信息,共显示10次。
vmstat 5 10
vmstat输出的各列含义如下:
- procs:进程相关信息,包括运行队列长度、等待CPU的进程数等。
- memory:内存相关信息,包括空闲内存、缓冲区、缓存、交换分区使用量等。
- swap:交换分区相关信息,包括交换分区使用情况。
- io:IO相关信息,包括块设备的读写情况。
- system:系统相关信息,包括中断、上下文切换次数等。
- cpu:CPU相关信息,包括用户态、系统态、空闲等CPU占用情况。
iftop
实时监控网络流量,显示各个网络接口的实时传输速率。通过 iftop 可以帮助监控网络性能并发现网络流量异常或者高峰。
css
iftop [options]
常见的iftop选项包括:
- -i:指定监控的网络接口,如eth0、wlan0等。
- -B:以字节为单位显示流量统计信息。
- -n:禁止将IP地址解析为主机名。
示例用法:
以默认设置启动iftop,监控所有网络接口的流量。
iftop
监控指定网络接口(例如eth0)的流量。
css
iftop -i eth0
以字节为单位显示指定网络接口(例如wlan0)的流量。
css
iftop -i wlan0 -B
iftop输出的各列含义如下:
- Source:源IP地址或主机名。
- Destination:目标IP地址或主机名。
- Proto:传输协议,如TCP、UDP等。
- In:接收流量,即进入本地主机的流量。
- Out:发送流量,即从本地主机发出的流量。
- Total:总流量,包括进入和发送的流量。
写在最后
对Linux系统管理比较感兴趣的朋友们,如果觉得这篇文章对您有帮助,请不妨点个赞和收藏起来吧!这些珍贵的技巧和知识将成为你日常工作中的得力助手,让你轻松应对各种系统管理挑战。