ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Linux基础命令---显示进程ps

Linux基础命令---显示进程ps

原创 Linux操作系统 作者:一生有你llx 时间:2019-02-09 17:20:51 0 删除 编辑

ps

ps 指令可以显示系统中当前进程的信息,它的输出结果是高度可定制的。如果您希望重复更新所选内容和显示的信息,请使用top(1)代替。

请注意,“ps-aux”与“ps aux”不同。POSIX和UNIX标准要求“ps-aux”打印名为“x”的用户拥有的所有进程,以及打印由-a选项选择的所有进程。如果名为“x”的用户不存在,此ps可以将命令解释为“ps aux”,并打印警告。此行为旨在帮助转换旧脚本和习惯。它是脆弱的,随时可能发生变化,因此不应依赖它。

默认情况下,ps选择所有具有相同有效用户ID(EUID=EUID)的进程作为当前用户,并与调用方相关联的终端。它显示进程ID(PID=PID)、与进程关联的终端(tname=TTY)、[dd-]hh:mm:SS格式的累计CPU时间(time=TIME)和可执行名称(ucmd=CMD)。默认情况下输出未排序。

使用BSD样式的选项将向默认显示中添加进程状态(stat=STAT),并显示命令args(args=命令)而不是可执行名称。您可以使用PS_FORMAT环境变量重写此操作。使用BSD样式的选项还将更改流程选择,以包括您拥有的其他终端(TTY)上的进程;或者,这可以描述为将选择设置为筛选的所有进程的集合,以排除其他用户拥有的进程或终端上的进程。当选项被描述为“相同”时,不考虑这些影响,所以-M将被认为与Z相同等等。

此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

 

1 、语法

ps [ 选项]

 

2 、选项列表

选项

说明

--help

显示帮助文档

-V | V | --version

显示命令版本

--info

显示调试信息

L

列出所有的格式

简单选项


-A | -e

选择所有进程

-N | --deselect

反向选择不符合条件的

T

选择符合的终端

-a

选择除会话进程和与终端无关的进程以外的所有进程。

a

此选项导致ps列出带有终端(TTY)的所有进程,或在与x选项一起使用时列出所有进程。

-d

选择所有进程,忽略进程所有者

g

全部的进程,包含会话领导

r

将选择限制为仅运行进程。

x

此选项导致ps列出您拥有的所有进程(与ps相同的EUID),或者在与a选项一起使用时列出所有进程。

多个选项

这些选项以空白分隔或逗号分隔列表的形式接受单个参数。它们可以多次使用。

-C cmdlist

按命令名选择。这将选择在cmdlist中给出可执行名称的进程。

-G grplist

选择进程所属的组id与给定list匹配的进程              

U userlist

按有效用户ID(EUID)或名称选择。有效用户ID描述进程使用其文件访问权限的用户

-U userlist

按实际用户ID(RUID)或名称进行选择。真正的用户ID标识创建进程的用户,

-g grplist

按会话或有效组名选择。

p   pidlist

按进程ID选择。

-p pidlist

按进程ID选择。

-s sesslist

按照会话ID选择

t   ttylist

通过tty选择。与-t和--tty几乎相同,但也可以与空ttylist一起使用,以指示与ps关联的终端。

-t   ttylist

选择指定的tty

-u userlist

按有效用户ID(EUID)或名称选择,等价于“U 和“--user”

--Group grplist

等价于“-G”

--User userlist

等价于“-U”

--group grplist

按有效组ID(EGID)或名称选择。有效组ID描述进程使用其文件访问权限的组。

--pid pidlist

等价于“-p”和“p”

-ppid ppidlist

选择父进程id匹配的进程

--sid sesslist

等价于“-s” 

--tty ttylist

等价于“-t”和“t”

--user userlist

等价于“-u”和“U”

- 123

等价于“--sid 123”

123

等价于“—pid 123”

 

3 、输出格式控制

格式

说明

-f | -F

输出完整的格式。它还会导致输出命令参数。当与-L一起使用时,将添加NLWP(线程数)和LWP(线程ID)列。

-O format

类似-o,但预加载了一些默认列。等价于“ -o pid, format ,state,tname,time,command ”或者“ -o pid, format ,tname,time,cmd ”

O format

预加载的o。当用作格式设置选项时,它与-O完全相同,具有BSD个性。

-M

添加一列安全数据。

X

寄存器格式

Z

等价于“-M”

-c

显示-l选项的不同调度程序信息。

j

BSD 作业控制格式

-j

作业格式

l

BSD 长格式

-l

长格式,经常和“-y”一起使用

o format

等价于“-o”和“--format”

-o format

用户定义格式。format是以空格分隔或逗号分隔的列表形式的单个参数,它提供了一种指定单个输出列的方法。标头可以按需要重命名( ps -o pid,ruser=RealUser -o comm=Command )。如果所有列标题都是空的( ps -o pid= -o comm= ),那么标题行将不会被输出。宽标头所需的列宽度将增加;这可用于扩展诸如WCHAN之类的列( ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm )。显式宽度控制( ps opid,wchan:42,cmd )也被提供。 ps -o pid=X,comm=Y 的行为随个性而变化,输出可能是一个名为“X,comm=Y”的列,也可以是两个名为“X”和“Y”的列。使用 PS_FORMAT 环境变量按需要指定默认值;DefSysV和DefBSD是可用于选择默认UNIX或BSD列的宏。

s

显示信号格式

u

以用户为主的模式

v

以虚拟内存为主的模式

-y

不显示标志位

-Z

显示安全上下文格式

--format format

和“-o”一样

--context

显示安全上下文格式

 

4 、输出修饰符

修饰符

说明

-H

显示进程层次结构

O   order

排序,过时的操作

S

总结一些信息,如CPU使用情况,从死子进程到父进程。

c

显示真正的命令名。这是从可执行文件的名称派生出来的,而不是从argv值派生的。因此,没有显示命令参数和对它们的任何修改

e

在命令之后显示环境

f | --forest

ASCII 格式的进程层次结构

h

没有头

k   spec

指定排序顺序,等价于“--sort”

-n namelist  |   N   namelist

正确的WCHAN显示需要名称列表文件,并且必须与当前Linux内核完全匹配才能得到正确的输出。如果没有此选项,则名称列表的默认搜索路径是:

$PS_SYSMAP

$PS_SYSTEM_MAP

/proc/*/wchan

/boot/System.map-`uname -r`

/boot/System.map

/lib/modules/`uname -r`/System.map

/usr/src/linux/System.map

/System.map

n

WCHAN 和User的数字输出。(包括所有类型的UID和GID)

-w | w

宽输出,对无限宽度使用此选项两次

--cols   n  |   --columns   n |   --width   n

设置屏幕宽度

--cumulative

包括一些死子进程数据(作为父进程的和)

--headers

重复头行,每页输出一行

--no-headers

根本不打印标题行

--lines   n  |   --rows   n

设置屏幕高度

--sort   spec

排序。语法是“[+|-]key[,[+|-]key[,...]]”,例如, ps jax --sort=uid,-ppid,+pid

 

5 、线程模式

线程模式

说明

H

把线程当做进程显示

-L

显示线程的LWP NLWP

-T

显示线程的SPID

m | -m

在进程之后显示线程

 

6 、说明

这个ps通过读取“/proc”中的虚拟文件来工作。这个ps不需要是setuid kmem,也不需要有任何特权来运行。不要给这个ps任何特殊的权限。此ps需要访问名称列表数据以获得正确的WCHAN显示。对于2.6之前的内核,必须安装System.map文件。

CPU 使用率当前表示为进程在整个生命周期中运行的时间百分比。CPU使用率不太可能达到100%。

SIZE 和RSS字段不计算进程的某些部分,包括页表、内核堆栈、结构体thread_info和task_struct。这通常是至少20kb的内存大小。SIZE是进程的虚拟大小(代码数据堆栈)。

标记为“defunct”的进程是死进程(所谓的“僵尸”),因为它们的父进程没有正确地销毁它们。如果父进程退出,则init(8)将销毁这些进程。

如果用户名的长度大于显示列的长度,则将显示数字用户ID。

 

7 、进程标志

这些值的和显示在“F”列中,该列由标志输出说明符提供。

1 ,已经fork,但是没有执行。

4 ,使用超级用户权限。

 

8 、进程状态码

下面是s、stat和state输出说明符(标头“stat”或“S”)将显示的用于描述进程状态的不同值:

D ,不间断睡眠(通常为IO)。

R ,正在运行或可运行(在运行队列上)。

S ,可中断睡眠(等待事件完成)。

T ,停止,要么是被作业控制信号阻止,要么是因为它正在被跟踪。

W ,分页(自2.6.xx内核以来无效)。

X ,死了(不应该被看见)。

Z ,已停止(“僵尸”)进程,终止但未由其父进程收获。

对于bsd格式和当使用stat关键字时,可能会显示其他字符:

< ,高优先级(对其他用户不好)。

N ,低优先级(对其他用户很好)。

L ,将页面锁定在内存中(用于实时和自定义IO)。

s ,是会话。

l ,是多线程的。

+ ,在前台进程组中。

 

9 、AIX格式描述符

这个ps支持AIX格式描述符,它们的工作方式有点像printf(1)和printf(3)的格式代码。例如,正常的默认输出可以这样产生: ps -eo "%p %y %x %c

CODE     NORMAL    HEADER

%C       pcpu         %CPU

%G       group        GROUP

%P       ppid         PPID

%U       user          USER

%a       args          COMMAND

%c       comm        COMMAND

%g       rgroup      RGROUP

%n       nice         NI

%p       pid          PID

%r       pgid         PGID

%t       etime        ELAPSED

%u       ruser       RUSER

%x       time        TIME

%y       tty          TTY

%z       vsz         VSZ

 

10 、标准格式说明符

以下是用于控制输出格式(例如,使用选项-o)或使用GNU样式的“--sort”序选项对所选进程进行排序的不同关键字。例如,“ ps -eo pid,user,args --sort user ”。这个版本的ps试图识别大多数在ps的其他实现中使用的关键字。以下用户定义的格式说明符可能包含空格: args, cmd, comm,command, fname, ucmd, ucomm, lstart, bsdstart, start 。某些关键字可能无法用于排序。

CODE

HEADER

说明

%cpu

%CPU

进程的CPU利用率为“#.#”格式。当前,它是CPU时间除以进程运行的时间(cputime/realtime比率),表示为百分比。除非你是幸运的,否则它不会达到100%。(别名 pcpu )

%mem

%MEM

进程的驻留集大小与机器上物理内存的比率,以百分比表示。(别名 PMEM )

args

COMMAND

命令,它的所有参数都是字符串。可以显示对参数的修改。该列中的输出可能包含空格。标记为“已失效”的进程部分死亡,等待其父进程完全销毁。有时进程args将不可用;当发生这种情况时,ps将可执行文件的名称打印在括号中。(别名cmd,命令)。

当最后指定该列时,该列将扩展到显示的边缘。如果ps不能确定显示宽度,例如当输出被重定向(管道)到一个文件或另一个命令时,输出宽度是未定义的。(它可以是80,无限,TERM等决定)环境变量COLUMNS或-cols选项可以用于精确地确定这种情况下的宽度。 w 或 -w 选项也可用于调整宽度。

blocked

BLOCKED

blocked 信号掩码。根据字段的宽度,以十六进制格式显示32位或64位掩码。(别名sig_block, sigmask)。

bsdstart

START

命令开始的时间。如果进程在24小时前启动,则输出格式为“hh:mm”,否则为“mmm dd”(其中mmm是月份的三个字母)。

bsdtime

TIME

用户和系统的累积CPU时间,。显示格式通常为“mmm:ss”,但如果进程占用的cpu时间超过999分钟,则可以移到右边。

c

C

处理器利用率当前,这是进程生存期内使用百分比的整数值。(见%cpu)。

caught

CAUGHT

捕获信号的掩码,见信号(7)。根据字段的宽度,以十六进制格式显示32或64位掩码。(别名 sig_catch ,  sigcatch )

cgroup

CGROUP

显示进程所属的控制组。

class

CLS

进程的调度类。(别名 policy ,  cls )。字段的可能值是:

-          not reported

TS  SCHED_OTHER

FF  SCHED_FIFO

RR  SCHED_RR

B   SCHED_BATCH

ISO SCHED_ISO

IDL SCHED_IDLE

?   unknown value

cls

CLS

同 class

cmd

CMD

同 args

comm

COMMAND

命令名(只有可执行的名称)。将不会显示对命令名的修改。标记为“已失效”的进程部分死亡,等待其父进程完全销毁。该列中的输出可能包含空格。(别名 ucmd , ucomm )。

当最后指定该列时,该列将扩展到显示的边缘。如果ps不能确定显示宽度,例如当输出被重定向(管道)到一个文件或另一个命令时,输出宽度是未定义的(它可以是80,无限,TERM) 。 COLUMNS 环境变量或 --cols 选项可以用于精确地确定这种情况下的宽度。 w 或 -w 选项也可用于调整宽度。

command

COMMAND

同args

cp

CP

CPU 使用率/ms

cputime

TIME

累计CPU时间,"[DD-]HH:MM:SS"格式。(别名 time )。

egid

EGID

进程的有效组ID数为十进制整数。(别名 gid )。

egroup

EFROUP

进程的有效组ID。如果可以获得并且字段宽度允许,这将是文本组ID,否则将是十进制表示。(别名 group )。

eip

EIP

指令指针

esp

ESP

栈指针

etime

ELAPSED

自进程启动以来,以[dd-]hh:]mm:SS形式运行的时间。

euid

EUID

有效用户ID,别名 uid

euser

EUSER

有效用户名。如果可以获得并且字段宽度允许,这将是文本用户ID,否则将是十进制表示。 n 选项可用于强制十进制表示。(别名 uname , user )。

f

F

与进程关联的标志,请参阅流程标志部分。(别名 flag ,  flags )。

fgid

FGID

文件系统访问组ID。(别名 fsgid )。

fgroup

FGROUP

文件系统访问组ID。如果可以获得并且字段宽度允许,这将是文本用户ID,否则将是十进制表示。(别名 fsgroup )

flag

F

同 f

flags

F

同 f

fname

COMMAND

进程可执行文件的基名的前8个字节。该列中的输出可能包含空格。

fuid

FUID

文件系统访问用户ID。(别名 fsuid )。

fuser

FUSER

文件系统访问用户ID。如果可以获得并且字段宽度允许,这将是文本用户ID,否则将是十进制表示。

gid

GID

同 egid

group

GROUP

同 egroup

ignored

IGNORED

被忽略的信号的掩码,根据字段的宽度,以十六进制格式显示32位或64位掩码。(别名 sig_ignore ,  sigignore )

label

LABEL

安全标签,最常用于SELinux上下文数据。这是针对在高安全系统上发现的强制访问控制(“MAC”)。

lstart

STARTED

命令开始的时间。

lwp

LWP

正在报告的LWP(轻量过程或线程)ID。(别名 spid , tid )

ni

NI

nice 值,范围从19(最好)到-20(对他人不友好)。 (别名 nice )。

nice

NI

同 ni

nlwp

NLWP

进程中的lwps(线程)数。(别名 thcount )。

nwchan

WCHAN

进程处于休眠状态的内核函数的地址(如果需要内核函数名称,请使用wchan)。正在运行的任务将在本列中显示一个破折号(‘-’)。

pcpu

%CPU

同 %cpu

pending

PENDING

挂起信号的掩码。进程上挂起的信号不同于单个线程上的待决信号。使用 m 选项或 -m 选项查看两者。根据字段的宽度,以十六进制格式显示32位或64位掩码。(别名 sig )。

pgid

PGID

进程组ID或相应的流程组领导的进程ID。(别名 pgrp )。

pgrp

PGRP

同 pgid

pid

PID

进程的进程ID号

pmem

%MEM

同 %mem

policy

POL

同 cls

ppid

PPID

父进程id

psr

PSR

进程当前分配给的处理器。

rgid

RGID

真实的组id

rgroup

RGROUP

真正的组名。如果可以获得并且字段宽度允许,这将是文本组ID,否则将是十进制表示。

rip

RIP

64 位指令指针。

rsp

RSP

64 位栈指针。

rss

RSS

驻留集大小,任务使用的非交换物理内存(以千字节为单位)。(别名 rssize , rsz )。

 

rssize

RSS

同rss

rsz

RSZ

同rss

rtprio

RTPRIO

实时优先级

ruid

RUID

实际用户ID

ruser

RUSER

真实的用户ID。如果可以获得并且字段宽度允许,这将是文本用户ID,否则将是十进制表示。

s

S

最小状态显示(一个字符)。

sched

SCH

进程的调度策略。策略SCHED_OTHER(SCHED_Normal)、SCHED_FIFO、SCHED_RR、SCHED_BATCH、SCHED_ISO和SCHED_IDELL分别显示为0、1、2、3、4和5。

sess

SESS

会话ID或等效的会话领导的进程ID。(别名 session , sid )。

sgi_p

P

进程当前正在执行的处理器。如果进程当前未运行或无法运行,则显示“*”。

sgid

SGID

保存的组ID。(别名 svgid )

sgroup

SGROUP

保存的组名。如果可以获得并且字段宽度允许,这将是文本组ID,否则将是十进制表示。

sid

SID

同 sess

sig

PENDING

同 pending

sigcatch

CAUGHT

同 caught

sigignore

IGNORED

同 ignored

sigmask

BLOCKED

同 blocked

size

SZ

如果进程要脏所有可写页,然后交换掉,则需要交换大约的交换空间。这个数字很粗糙!

spid

SPID

同lwp

stackp

STACKP

进程堆栈的底部(开始)地址

start

STARTED

命令开始的时候。如果进程在24小时前启动,则输出格式为“hh:mm:ss”,否则为“mmm dd”(其中mmm是三个字母的月份名称)。

start_time

START

进程的开始时间或日期。只有进程未启动的年份(即调用ps的年份)或“mmmdd”(如果进程未在同一天启动)或“hh:mm”将显示。

stat

STAT

多字符进程状态。有关不同值的含义,请参见处理状态代码一节。如果只希望显示第一个字符,请参见 s 和 state 。

state

S

同s

suid

SUID

保存的用户ID。(别名 svuid )。

suser

SUSER

保存的用户名。如果可以获得并且字段宽度允许,这将是文本用户ID,否则将是十进制表示。(别名 svuser )

svgid

SVGID

同 sgid

svuid

SVUID

同 suid

sz

SZ

进程核心图像的物理页面大小。这包括文本、数据和堆栈空间。当前排除了设备映射;这可能会发生更改。参见 vsz 和 rss 。

thcount

THCNT

同 nlwp

tid

TID

同 lwp

time

TIME

统计CPU时间,"[DD-]HH:MM:SS"格式。(别名 cputime )。

tname

TTY

控制TY(终端)(别名 tt , tty )。

tpgid

TPGID

进程连接到的TTY(终端)上的前台进程组的ID,如果进程没有连接到TTY,则为-1。

tt

TT

同 tname 。

tty

TT

同 tname 。

ucmd

CMD

同 comm 。

ucomm

COMMAND

同 comm 。

uid

UID

同 euid 。

uname

USER

同 euser 。

user

USER

同 euser 。

vsize

VSZ

同 vsz 。

vsz

VSZ

进程的虚拟内存大小(1024字节单位)。当前排除了设备映射;这可能会发生更改。(别名 vsize )。

wchan

WHAN

进程处于休眠状态的内核函数的名称,如果进程正在运行,则为“-”,如果进程是多线程且ps不显示线程,则为“*”。

 

11 、环境变量

下面的环境变量会影响ps的行为:

COLUMNS ,覆盖默认的宽度。

LINES ,覆盖默认的高度。

PS_PERSONALITY ,设置为POSIX中的一个,old,linux,bsd,sun,digital。

CMD_ENV ,设置为POSIX中的一个,old,linux,bsd,sun,digital。

I_WANT_A_BROKEN_PS ,解释过时命令。

LC_TIME ,日期格式。

PS_COLORS ,现在还不支持。

PS_FORMAT ,默认输出格式覆盖。

PS_SYSMAP ,默认名称列表(System.map)位置。

PS_SYSTEM_MAP ,默认名称列表(System.map)位置。

POSIXLY_CORRECT ,不要找借口忽视不好的“特性”。

POSIX2 ,当设置为“on”时,充当POSIXLY_TRIDER。

UNIX95 , 不要找借口忽视不好的“特性”。

_XPG ,取消CMD_ENV=irix非标准行为。

一般来说,设置这些变量是个坏主意。一个例外是CMD_ENV或PS_PERSONALITY,对于正常系统,可以将它们设置为Linux。如果没有这种设置,PS就会遵循Unix 98标准中无用的和坏的部分。

 

12 、例子代码

若要使用标准语法查看系统上的每个进程,请执行以下操作:

ps -e

ps -ef

ps -eF

ps –ely

若要使用 BSD 语法查看系统上的每个进程,请执行以下操作:

ps ax

ps ax

打印进程树

ps -ejH

ps axjf

获取线程信息

ps -eLf

ps axm

获取安全信息

ps -eo euser,ruser,suser,fuser,f,comm,label

ps axZ

ps –eM

若要以用户格式将每个进程作为根进程运行 ( 实际有效 ID) ,请执行以下操作:

ps -U root -u root

要使用用户定义的格式查看每个进程:

ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm

ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

ps -eopid,tt,user,fname,tmout,f,wchan

只打印进程 sislogd 的 PID

ps -C syslogd -o pid=

只打印 PID 为 42 的进程名字

ps -p 42 -o comm=

 

13 、实例

1 )显示所有用户的所有进程信息 

[root@localhost ~]#  ps -aux

Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root         1  0.0  0.0   2900  1504 ?        Ss   Sep19  0:00 /sbin/init

root         2  0.0  0.0      0     0 ?        S    Sep19  0:00 [kthreadd]

root         3  0.0  0.0      0     0 ?        S    Sep19  0:00 [migration/0]

root         4  0.0  0.0      0     0 ?        S    Sep19  0:02 [ksoftirqd/0]

root         5  0.0  0.0      0     0 ?        S    Sep19  0:00 [migration/0]

root         6  0.0  0.0      0     0 ?        S    Sep19  0:02 [watchdog/0]

。。。

david     7226  0.0  0.1  50856  3020 ?        Sl   06:32  0:00 /usr/bin/gnome-keyring-daemon --dae

david     7238  0.0  0.3  32944  6244 ?        Ssl  06:32  0:00 gnome-session

david     7246  0.0  0.0   3664   760 ?        S    06:32  0:00 dbus-launch --sh-syntax --exit-with

david     7247  0.0  0.0   3396  1316 ?        Ss   06:32  0:00 /bin/dbus-daemon --fork --print-pid

david     7306  0.0  0.0  19200   364 ?        S    06:32  0:00 /usr/bin/VBoxClient --display

david     7308  0.0  0.0  19200  1080 ?        S    06:32  0:00 /usr/bin/VBoxClient --display

david     7312  0.0  0.0  19200   360 ?        S    06:32  0:00 /usr/bin/VBoxClient --seamless

david     7314  0.0  0.0  20884  1188 ?        Sl   06:32  0:00 /usr/bin/VBoxClient --seamless

david     7318  0.0  0.0  19200   360 ?        S    06:32  0:00 /usr/bin/VBoxClient --draganddrop

david     7320  0.1  0.0  21400  1296 ?        Sl   06:32  0:07 /usr/bin/VBoxClient --draganddrop

david     7343  0.0  0.2  10712  4624 ?        S    06:32  0:00 /usr/libexec/gconfd-2

。。。

2 )显示用户david的进程信息 

[root@localhost ~]#  ps -u david

  PID TTY          TIME CMD

 7226 ?       00:00:00 gnome-keyring-d

 7238 ?       00:00:00 gnome-session

 7246 ?       00:00:00 dbus-launch

 7247 ?       00:00:00 dbus-daemon

 7306 ?       00:00:00 VBoxClient

 


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29270124/viewspace-2564950/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
多年物联网讲师经验,曾任职于达内、华清等公司。擅长Linux、c、java、Android、单片机、ZigBee、BLE等领域

注册时间:2018-10-21

  • 博文量
    266
  • 访问量
    384015