使用Linux Top命令检查进程的内存使用情况

时间:2020-03-05 15:29:55  来源:igfitidea点击:

通常,我们使用free命令查看内存使用情况,该命令为我们提供了总的物理内存和总内存中的已用内存。

但是top命令对于检查Linux中的内存使用情况更为有用。
free命令仅显示物理内存使用情况,而顶部显示每个进程的虚拟内存使用情况。
它显示每个运行进程单独消耗一个进程多少内存“%”。

Top命令显示了CPU使用率最高的任务的列表,还可以按CPU使用率,内存使用率和运行时对任务进行排序。

根据内存排序

打开shell运行top命令,如果我们运行top,它将只显示正在运行的进程的命令名称,要查看完整的命令,我们在顶部使用'-c'选项。

$top -c

然后按“ m”,它将按最高内存使用顺序对输出进行排序,如下所示:

top - 07:12:37 up 69 days,  4:33,  1 user,  load average: 0.17, 0.10, 0.06
Tasks: 164 total,   1 running,  98 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.2 us,  0.5 sy,  0.0 ni, 96.0 id,  0.0 wa,  0.2 hi,  0.2 si,  0.0 st
KiB Mem : 29.3/4024444  [|||||||||||||||||||||||||||||                                                                       ]
KiB Swap:  9.5/524284   [||||||||||                                                                                          ]
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
24426 www-data  20   0  449796  62568  45484 S   5.3  1.6   0:25.12 php-fpm: pool www
19577 www-data  20   0  448112  60288  44652 S   1.7  1.5   0:29.16 php-fpm: pool www
 1233 root      20   0 1292628  41960   5188 S   0.3  1.0 580:00.20 /opt/site24x7/monagent/lib/Site24x7Agent
 1928 root      20   0 1183840  43808   5368 S   0.3  1.1  56:50.99 /opt/site24x7/monagent/lib/applog/Site24x7Applog
 7859 root      20   0   41856   3880   3200 R   0.3  0.1   0:00.07 top -c
    1 root      20   0   37672   4604   3240 S   0.0  0.1  14:35.54 /sbin/init
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.78 [kthreadd]
    3 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 [rcu_gp]
    4 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 [rcu_par_gp]

我们也可以按以下方式运行top命令

$top

然后从键盘上按'SHIFT'+'m'以按内存使用量排序。

使用快捷键

现代Linux发行版支持顶部的交互式菜单来选择内存使用情况。

请按照以下步骤操作:

  • 按“ Shift + f”进入交互式菜单。
  • 按“向上”或者“向下”箭头,直到突出显示“%MEM”选项。
  • 按“ s”选择“%MEM”选项。
  • 按“输入”保存选择并退出(“ q”)交互式菜单。

下面的屏幕截图显示了交互式菜单'Shift + f':

在旧版本的Linux中,它会有些不同,如下所示:

运行“ top”命令并按“ shift” +“ f”,则输出将如下所示:

Current Sort Field: K for window 1:Def
Select sort field via field letter, type any other key to return
a: PID = Process Id
b: PPID = Parent Process Pid Note2:
c: RUSER = Real user name Field sorting uses internal values,
d: UID = User Id not those in column display. Thus,
e: USER = User Name the TTY & WCHAN fields will violate
f: GROUP = Group Name strict ASCII collating sequence.
g: TTY = Controlling Tty (shame on you if WCHAN is chosen)
h: PR = Priority
i: NI = Nice value
j: P = Last used cpu (SMP)
* K: %CPU = CPU usage
l: TIME = CPU Time
m: TIME+ = CPU Time, hundredths
n: %MEM = Memory usage (RES)
o: VIRT = Virtual Image (kb)
p: SWAP = Swapped size (kb)
q: RES = Resident size (kb)
r: CODE = Code size (kb)
s: DATA = Data+Stack size (kb)
t: SHR = Shared Mem size (kb)
u: nFLT = Page Fault count
v: nDRT = Dirty Pages count
w: S = Process Status
x: COMMAND = Command name/line
y: WCHAN = Sleeping in Function
z: Flags = Task Flags

现在按与'%MEM'对应的字母,即'n',然后按'ENTER'键。

使用单个命令

我们可以从终端运行以下单个top命令以显示内存使用情况:

$top -o %MEM