shell学习五十天----查看进程ps命令

Posted wzzkaifa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell学习五十天----查看进程ps命令相关的知识,希望对你有一定的参考价值。

进程列表

列出进程中最重要的命令便是进程状态命令:ps.

ps命令是进程状态(Process Status)的缩写.ps命令用来列出系统中当前执行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,假设想要动态的显示进程信息,就能够使用top命令.

 

要对进程进行检測和控制,首先必需要了解当前进程的情况,也就是需要查看当前进程,ps命令就是最基本同一时候也是很强大的进程查看命令.使用该命令能够确定有哪些进程正在执行和执行的状态,进程是否结束,进程有没有僵尸,哪些进程占用了过多的资源等等.总之大部分信息都是能够通过执行该命令得到的.

 

ps为我们提供了进程的一次性(不要给性加重音)的查看,他所提供的查看结果并不动态连续;假设想对进程进行时间监控,应该使用top工具.

 

kill命令用来杀死进程

 

Linux上进程有五种状态

1.执行(正在执行或在执行队列中的等待)

2.中断(休眠中,受阻,在等待某个条件的形成或接收到信号)

3.不可中断(收到信号不唤醒和不可执行,进程必须等待直到有中断发生)

4.僵尸(进程已终止,但进程描写叙述符存在,直到父进程调用wait()系统调用后释放)

5.停止(进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号后停止执行)

 

ps工具标识进程的物种状态码:

状态码

说明

D

不可中断

R

执行

S

中断

T

停止

Z

僵尸

 

 

ps具体解释:

1.命令格式:

ps [參数]

2.功能

用来显示当前进程的状态

3.命令參数

參数

说明

a

显示全部进程

-a

显示统一终端下的全部程序

-A

显示全部进程

c

显示进程的真实名称

-N

反向选择

-e

等于”-A”

e

显示环境变量

f

显示程序间的关系

-H

显示树状结构

r

显示当前中断的进程

T

显示当前终端的全部进程

u

指定用户的全部进程

-au

显示较具体的资讯

-aux

显示全部包括其它使用者的进程

-C<命令>

列出指定命令的状态

--lines<行数>

每页显示的行数

--width<字符数>

每页显示的字符数

--help

显示帮助信息

--version

显示版本号信息

 

4.简单的使用

案例1:显示全部进程:

#ps -A

 

 PID TTY          TIME CMD

    1 ?        00:00:04 init

    2 ?

        00:00:00 kthreadd

    3 ?        00:00:00 migration/0

省略部分结果

 

案例2:显示指定用户信息:

#ps -u root

  PID TTY          TIME CMD

    1 ?

        00:00:04 init

    2 ?

        00:00:00 kthreadd

3 ?        00:00:00 migration/0

省略部分结果

 

案例3:显示全部进程信息,连同命令行

#ps -ef

UID        PID  PPID  C STIME TTY          TIME CMD

root         1     0  0 19:45 ?        00:00:04 /sbin/init

root         2     0  0 19:45 ?

        00:00:00 [kthreadd]

root         3     2  0 19:45 ?

        00:00:00 [migration/0]

root         4     2  0 19:45 ?        00:00:00 [ksoftirqd/0]

省略部分结果

 

案例4: psgrep经常使用组合使用方法,查找特定进程

命令:

#ps -ef|grep ssh

root      1358     1  0 19:46 ?        00:00:00 /usr/sbin/sshd

root      1650  1358  0 19:47 ?        00:00:00 sshd: [email protected]/0 

root      3598  1652  0 21:27 pts/0    00:00:00 grep ssh

 

 

 

案例5:将眼下属于您自己这次登入的PID与相关信息列出

#ps -l

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD

4 S     0  1652  1650  0  80   0 - 27116 wait   pts/0    00:00:00 bash

4 R     0  3600  1652  0  80   0 - 27033 -      pts/0    00:00:00 ps

 

分析说明:各相关信息的意义:

F代表这个程序的标识(flag),4代表使用者为super user

S代表这个程序的状态(STAT).

UID:程序被该UID所拥有

PID:就是这个程序的ID

PPID:则是其上级父程序的ID

C:CPU使用的资源百分比

PRI:这个是Priority(优先执序行)的缩写

NI:这个是nice

ADDR:这个是kernel function,指出该程序在内存的那个部分.假设是个running的程序,一般就是”-”.

SZ:使用掉的内存大小

WCHAN:眼下这个程序是否正在运作其中,若为-表示正在运作

TTY: 登入这的终端机位置

TIME: 使用掉的CPU时间

CMD:所下达的指令为何

 

在预设的情况下,ps仅会列出与眼下所在的bash shell有关的PID而已,所以当我们使用ps -l的时候,仅仅有三个PID.

 

案例6:列出眼下全部的正在内存其中的程序

#ps aux

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

root         1  0.0  0.0  19356  1612 ?        Ss   19:45   0:04 /sbin/init

root         2  0.0  0.0      0     0 ?        S    19:45   0:00 [kthreadd]

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

 

省略部分结果

分析说明:

USER:process是属于哪个使用者账号的

PID:process的号码

%CPU:process使用掉的CPU资源百分比

%MEM:process所占用的物理内存百分比

VSZ:process使用掉的虚拟内存量(kb)

RSS:process占用的固定的内存量(kb)

TTY:process是在哪个终端机上执行,若与终端机无关,则显示 ? ,另外,tty1-tty6表示本机上的登入者程序,若为pts/0等等,则表示为由网络接进主机的程序.

STAT:该程序眼下的状态,主要状态有:R(该程序眼下正在执行,或者是可被执行),S(该程序眼下正在睡眠中,但可被某些讯号唤醒),T(该程序应该已经终止,可是其父进程却无法正常的终止它,造成僵死程序的状态).

START:process被触发启动的时间

TIME:process实际使用CPU运作的时间

COMMAND:该程序的实际命令.

 

 

案例7:列出类似程序树的程序显示

#ps -axjf

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

 PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND

    0     2     0     0 ?           -1 S        0   0:00 [kthreadd]

    2     3     0     0 ?           -1 S        0   0:00  \_ [migration/0]

    2     4     0     0 ?

           -1 S        0   0:00  \_ [ksoftirqd/0]

    2     5     0     0 ?           -1 S        0   0:00  \_ [migration/0]

 

 

 

其它案例:

使用:

#ps -aux|more //实现分页查看

 

使用:

#ps -aux>test.txt //把全部进程显示出来,并输出到test.txt文件

 

使用:

#ps -o pid,ppid,pgrp,session,tpgid,comm//输出指定的字段

  PID  PPID  PGRP  SESS TPGID COMMAND

 1556  1554  1556  1556  1582 bash

 1582  1556  1582  1556  1582 ps

以上是关于shell学习五十天----查看进程ps命令的主要内容,如果未能解决你的问题,请参考以下文章

如何用ps命令只显示父进程

Linux(RadHat)基础学习—进程管理

Linux技术学习:怎么查看进程 ps

Linux技术学习:怎么查看进程 ps

如何用shell把 ps

linux环境下 ps命令查看找不到java进程,使用ps-efgrep java可以找到java进程,为啥?