Linux平台及应用
潘小玲 郑国华 丁敏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

查看进程

发布时间:2020-04-19 20:43   发布人:潘小玲   浏览次数:613

(2)查看进程

(2.1)获取进程信息的命令

通过命令可以查看进程状态,获取有关进程的相关信息。例如:

Ø  显示哪些进程正在执行和执行的状态。

Ø  进程是否结束、进程有没有僵死。

Ø  哪些进程占用了过多的系统资源等。

下表中列出了常用的获取进程信息的命令。

命     令

说     明

ps

查看进程的详细信息

pgrep

通过模式(使用与grep相同的匹配模式)匹配查找进程的PID

pidof

通过进程名获取进程的PID

(2.2)ps命令

在Linux中,可使用ps命令对进程进行查看。ps是一个功能非常强大的进程查看命令。

使用该命令使用户可以确定有哪些进程正在执行和执行的状态、进程是否结束、进程有没有僵 死、哪些进程占用了过多的系统资源等。总之,大部分信息都可以通过运行ps命令来获得。下面介绍ps命令的格式和常用选项。ps 命令的格式如下:

$ ps [选项]

由于ps命令的功能相当强大,所以该命令有大量的选项参数,这里只介绍几个最常用的选项,如下表所示。

ps 命令的常用选项

选项

说       明

选项

说明

a

显示所有进程

0-H

显示进程树,等价于--forest

e

在命令后显示环境变量

w/-w

宽行输出。通常用于显示完整的命令行

u

显示用户名和启动时间等信息

-e

显示所有进程,等价于--A

x

显示没有控制终端的进程

-f

完全显示。增加用户名、PPID、进程起时间

,o/-o<list>

由用户自定义输出列,list是一个以逗号间隔的输出项列表

--sort<order>

指定按哪/哪些列排序,order格式为:[ |-]key[,[ |-]key[,…]]

下表中列出了ps命令输出的重要信息的含义。

 

ps命令输出的重要信息的含义

输出项

说明

输出项

说明

PID

进程号

TIME

进程自从启动以来占用CPU的总时间

PPID

父进程的进程号

USER

用户名

TTY

进程从哪个终端启动

%CPU

占用CPU时间与总时间的百分比

STAT

进程当前状态

%MEM

占用内存与系统内存总量的百分比

START

进程开始执行的时间

SIZE

进程代码大小 数据大小 栈空间大小,单位KB

VSZ

进程占用的虚拟内存空间,单位KB

COMMANDICMD

进程的命令名

RSS

进程所占用的内存的空间,单位KB



其中,在进程状态(STAT) -栏中表示状态的字符含义如下表所示。

进程状态的字符含义

状态

说        明

R

进程正在执行中(进程排在执行队列里,随时都会被执行)

S

进程处于睡眠状态(sleeping)

T

追踪或停止

Z

僵尸进程(zombie),进程已经被终止,但其父进程并不知道,没有妥善处理

W

进程没有固定的pages

< 

高优先级的进程

N

低优先级的进程

(2.3)进程显示命令举例

下面给出一些显示进程信息的例子。

操作步骤3.13显示进程的例子

//显示出当前用户在Shell下所运行的进程信息

$ps

//只查看用户osmond的进程信息

# ps -u osmond

//列出系统中正在运行的所有进程的详细信息

$ ps aux

$ ps -ef

//想看清所运行的进程的完整命令行,可以使用w参数

$ ps auxw

$ ps efw

//显示系统进程树

$ ps axf

$ ps -efH

//显示指定进程的详细信息

# ps aux|grep httpd

# ps -fp $(pgrep -d, -x httpd)

//因为ps命令的-p参数需要一个以逗号间隔的PID列表,所以

//命令替换中的pgrep命令使用参数-d,表示以逗号间隔进行输出而非默认的换行

//命令替换中pgrep的参数-x表示精确匹配

# pgrep -x httpd |xargs ps -fp

// xargs命令的含义是将管道获取的输入作为其后ps -fp 命令的参数

//对指定的输出项进行排序

$ ps -ef --sort user,-time

$ ps aux --sort -pcpu

$ ps aux --sort -pmem

//列出httpd进程的PID

# ps -C httpd -o pid

# pidof httpd

# pgrep httpd

//查找符合条件的进程PID

# pgrep -u root sshd   //列出root用户运行的sshd进程的PID

# pgrep -u root,daemon  //列出root用户或daemon用户运行的所有进程的PID

# pgrep -G student     //列出student组运行的所有进程的PID

//注意pgrep中精确匹配与默认匹配的区别

# pgrep http

# pgrep -x http

# pgrep -x httpd

注意:

不加“-1”参数的pgrep命令的输出仅是符合条件进程的PID。若要显示这些进程更详细的信息,还需要使用如下形式之一:

$ ps -fp $(pgrep -d, XXXXX)

$ pgrep -x XXXXX |xargs ps -fp