5. ubuntu的实践——命令内存

时间:2024-04-13 13:49:11

5.命令内存

作为Linux用户,特别是管理员,我们需要检查系统使用多少内存资源以及有多少内存资源是空闲的。我们还知道,通过Linux命令行而不是图形用户界面可以更好地实现大多数与管理相关的任务。例如,服务器主要在shell上工作,并且首先没有可用的UI。由于最重要的是要检查服务器上的内存资源,因此最好学习可以帮助我们进行服务器管理的相关命令。本文解释了使用以下5个命令来检查可用内存:

  • free命令
  • vmstat命令
  • /proc/meminfo命令
  • top命令
  • htop命令

通过使用这些命令,您始终可以确保有足够的内存资源用于服务器上运行的非常重要的进程。例如,如果您正在运行Web服务器,则可以确保缺少资源不会降低网站访问速度,或者网站不会完全停止运行。
我们在CentOS 7.5系统上运行了本文中提到的命令和过程,Ubuntu Linux上也一样。
为了查看内存使用情况,我们使用的是Linux命令行,终端应用程序。您可以通过系统Dash打开终端。

5.1.free

由于free命令是最广泛使用的,毫无疑问是最有用的,我们首先会提到它的用法。此命令用于检查有关系统RAM使用情况的信息。以下是您将在终端中输入的命令:
[email protected]:~$ free
[email protected]:~$ free -m
[email protected]:~$ free -k
5. ubuntu的实践——命令内存

available列 表示可用内存。 Swap条目中used的列是 51,这意味着它使用了51M,空闲部分是1996M。

5.2.vmstat

要通过vmstat命令查看内存统计信息,可以按以下方式使用它:
[email protected]:~$ vmstat -s
5. ubuntu的实践——命令内存

s标签提供有关内存使用的详细统计信息。
您可以在输出中查看可用内存和可用交换内存条目,指示系统中的可用内存。

5.3./proc/meminfo命令

以下命令从/proc文件系统中提取与内存相关的信息。 这些文件包含有关系统和内核的动态信息,而不是真实的系统文件。
这是用于打印内存信息的命令:
[email protected]:~$ cat /proc/meminfo
5. ubuntu的实践——命令内存

此命令的输出类似于vmstat命令。 您可以轻松查看MemFree结果中的空闲内存和SwapFree结果中的可用交换内存。

5.4.top命令

top命令用于打印系统的CPU和内存使用情况。
为了运行top的命令,打开Ubuntu命令行终端,输入以下命令:
$ top

您可以通过系统Dash或Ctrl + Alt + T快捷方式打开终端。
以下是top命令的输出结果:

5. ubuntu的实践——命令内存

输出的上半部分显示有关进程和资源使用情况的统计信息。 下半部分显示当前正在运行的进程列表。 要浏览列表,您可以使用箭头键或向上翻页和向下翻页键。
如果要退出命令,可以按q或使用将终止命令的Ctrl + c快捷键。

5.4.1.界面的名词意义

  • 第一行:系统运行时间和平均负载
    当前时间、系统已运行时间、当前登录用户的数量、最近5、10、15分钟内的平均负载
  • 第二行:任务
    任务的总数、运行中(running)的任务、休眠(sleeping)中的任务、停止(stopped)的任务、僵尸状态(zombie)的任务
  • 第三行:cpu状态
字段 字段释义
us user: 运行(未调整优先级的) 用户进程的CPU时间
sy system: 运行内核进程的CPU时间
ni niced:运行已调整优先级的用户进程的CPU时间
id idle:空闲时间
wa IO wait: 用于等待IO完成的CPU时间
hi 处理硬件中断的CPU时间
si 处理软件中断的CPU时间
st 这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)
  • 第四行:内存
    全部可用内存、已使用内存、空闲内存、缓冲内存
  • 第五行:swap
    全部、已使用、空闲和缓冲交换空间
  • 第七行至N行:各进程任务的的状态监控
字段 释义
PID 进程ID,进程的唯一标识符
USER 进程所有者的实际用户名
PR 进程的调度优先级。这个字段的一些值是’rt’。这意味这这些进程运行在实时态。
NI 进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级
VIRT virtual memory usage 虚拟内存,进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES。 1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等 2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量
RES resident memory usage 常驻内存,驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA ,1、进程当前使用的内存大小,但不包括swap out ,2、包含其他进程的共享 ,3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反 ,4、关于库占用内存的情况,它只统计加载的库文件所占内存大小
SHR SHR:shared memory 共享内存 ,1、除了自身进程的共享内存,也包括其他进程的共享内存 ,2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小 , 3、计算某个进程所占的物理内存大小公式:RES – SHR , 4、swap out后,它将会降下来
S 这个是进程的状态。它有以下不同的值: D - 不可中断的睡眠态。 R – 运行态,S – 睡眠态, T – 被跟踪或已停止 , Z – 僵尸态
%CPU 自从上一次更新时到现在任务所使用的CPU时间百分比。%CPU显示的是进程占用一个核的百分比,而不是整个cpu(N核)的百分比,有时候可能大于100,那是因为该进程启用了多线程占用了多个核心,所以有时候我们看该值得时候会超过100%,但不会超过总核数*100
%MEM 进程使用的可用物理内存百分比
TIME+ 任务启动后到现在所使用的全部CPU时间,精确到百分之一秒
COMMAND 运行进程所使用的命令。进程名称(命令名/命令行)

5.4.2.交互命令

5.4.2.1.查看top命令帮助

top命令帮助将为您提供一个选项列表,您可以使用这些选项来自定义输出以及在运行top命令时可以执行的功能。
要查看帮助,只需在top命令运行时按h键。
5. ubuntu的实践——命令内存

参数 意义
Z 改变颜色
B 加粗
t 显示和隐藏任务/cpu信息
m 内存信息
1 监控每个逻辑CPU的状况
f 进入字段显示配置模式,可增加或者移除显示字段,按相应的字母新增或去除;o:进入字段顺序设置模式,可配置显示位置顺序,按相应的字母往下移动,按“shift+相应的字母”往上移动 ---------常用
F 进入字段排序配置模式,可设置排序的字段
R 正常排序/反向排序
s 设置刷新的时间--------常用
u 输入用户,显示用户的任务
i 忽略闲置和僵死进程。这是一个开关式命令
r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
c 切换显示命令名称和完整命令行
M 根据驻留内存大小进行排序。-------------常用
P 根据CPU使用百分比大小进行排序。-----------常用
H 显示线程

5.4.2.2.设置刷新屏幕的时间间隔

默认情况下,top命令输出每3秒刷新一次。要更改此间隔,请在top命令运行时按d键。然后,您可以输入新的时间(以秒为单位),之后将在屏幕上刷新最新的输出。
5. ubuntu的实践——命令内存

5.4.2.3.突出显示top输出中的活动进程

在top命令运行时按z键时,当前活动的进程将以彩色显示,如下所示:
5. ubuntu的实践——命令内存

5.4.2.4.查看进程的绝对路径

如果要查看正在运行的进程的绝对路径,请在top命令运行时按c键。在以下输出中,您可以看到该命令现在在“Command”列中显示正在运行的进程的路径:
5. ubuntu的实践——命令内存

5.4.2.5.使用Top命令终止正在运行的进程

top命令的一个非常强大的功能是你可以通过它杀死正在运行的进程。当进程无响应并且您想要删除它时,这尤其有用。在top命令运行时按k键。提示将询问您要杀死的PID。通过从列表中查看所需的进程ID,然后按Enter键输入。该过程和相应的应用程序几乎会立即关闭。
5. ubuntu的实践——命令内存

5.4.2.6.更改流程Renice的优先级

Renice意味着改变过程的优先级。在top命令运行时按r键,然后输入要更改其优先级的进程的PID。

5. ubuntu的实践——命令内存

5.4.3.常用参数与命令

5.4.3.1.显示特定用户的进程

如果希望top命令显示特定用户正在运行的进程,则可以使用以下语法:
$ top -u [username]
例如,以下命令将显示root运行的所有进程:
$ top -u root

5. ubuntu的实践——命令内存

5.4.3.2.在特定刷新次数后自动退出top命令

如上所述,您可以通过q或ctrl + c手动退出top命令。如果您希望top命令仅运行直到特定数量的输出刷新,您可以使用以下命令:
$ top -n [no-of-refreshes]
例:
如果在终端中输入以下命令,则top命令将保持活动状态,直到3次刷新,然后它将自动退出。
$ top -n 3
5. ubuntu的实践——命令内存

5.4.4.将top命令结果保存到文本文件

如果将top命令的输出保存到文本文件,则可以保存系统的当前状态以供以后使用。
您可以这样做:
$ top -n [no-of-intervals] -b > filename.txt
例如,以下命令将top命令的一个输出的结果保存到名为top.txt的文件中:
$ top -n 1 -b > top.txt
$ cat top.txt

该文件将保存到当前用户命令的文件夹中。

5.5.htop命令

就像top命令一样,htop命令也会详细分析您的CPU和内存使用情况。 如果您的系统上没有安装htop,Ubuntu下可以先通过以下命令更新abt存储库来安装它:
$ sudo apt-get update
然后输入以下命令(ubuntu)
$ sudo apt install htop
CentOS下使用如下命令安装:
$ sudo yum install htop
运行:[email protected]:~$ htop
5. ubuntu的实践——命令内存

标题中的Mem (Memory 也就是 RAM) 和 Swp (Swap)条目表示已用和总内存,通过它可以计算系统上可用的可用内存。
使用我们在本文中提到的命令,您可以监视系统进程内存情况。 您可以完全不使用GUI,并且仍然可以检查个人计算机和服务器上的内存使用情况。