工作之命令小总结(1):ps命令

简介:

linux的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程的信息需要使用top命令。

若要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、那些进程占用过多的资源等等。

linux上进程有五种状态:

1、运行(正在运行或运行队列中等待)

2、中断(休眠中、受阻、在等待某个信号条件的形成)

3、不可中断(收到信号不唤醒和不可运行,进程必须等待)

4、僵死(进程已终止,但进程描述符存在)

5、停止(进程停止运行)

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

R:运行 runnable

S:中断 slepping

D:不可中断 uninterruptible sleep

T:停止 stopped

Z:僵死zombie

名称:

  PS

功能:

报告程序状况

用法:

 ps[-aAcdefHjlmNVwy][acefhgLnrsSTuvxX][-C<指令名称>][-g<群组名称>][-G<群组号码>][-p<程序识别码>][p<程序识别码>][-s<阶段作业>][-t<终端机编号>][t<终端机号码>][-u<用户识别码>][-U<用户识别码>][U<用户名称>][-<程序识别码>][--cols<每行字符数>][--columns<每列字符数>][--cumulative][--deselect][--forest][--headers][--help][--info][--lines<显示列数>][--no-headers][--group<群组名称>][-Group<群组识别码>][--pid<程序识别码>][--rows<显示列数>][--sid<阶段作业>][--tty<终端机编码>][--user<用户名称>][--User<用户识别码>][--version][--width<每列字符数>]

参数:

-a           显示所有终端机下执行的程序,除了阶段作业领导者之外。

a            显示现行终端机下的所有程序,包括其他用户的程序。

-A           显示所有程序。

-c           显示CLS和PRI栏位。

c            列出程序时,显示每个程序真正的指令名称,而不包含路径、参数或常驻服务的标示。

-C<指令名称>    指定执行指令的名称,并列出该指令的程序的状况。

-d           显示所有程序,但不包含阶段作业领导者程序。

-e           此参数的效果和指定‘A’参数相同。

e            列出程序时,显示每个程序所使用的环境变量。

-f           用ASCII字符显示树状结构,表达程序间的相互关系。

-g<群组名称>    此参数的效果和指定"-G"参数相同,当亦能使用阶段作业领导者的名称来指定。

g            显示现行终端机下的所有程序,包含群组领导者的程序。

-G<群组识别码>  列出属于该群组的程序的状况,也可使用群组名称来指定。

h            不显示标题列。

-H           显示树状结构,表示程序间的相互关系。

-j或j        采用工作控制的格式显示程序状况。

-l或l        采用详细的格式来显示程序状况。

L            列出栏位的相关信息。

-m或m        显示所有的执行者。

n            以数字来表示USER和WCHAN栏位。

-N           显示所有的程序,除了执行ps指令终端机下的程序之外。

-p<程序识别码>  指定程序识别码,并列出改程序的状况。

p<程序识别码>   此参数的效果和指定的"-p"参数相同,只在列表格式方面稍有差异。

r            只列出现行终端机正在执行中的程序。

-s<阶段作业>    指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。

s            采用程序信号的格式显示程序状况。

S            列出程序时,包含已中断的子程序资料。

-t<终端机编号>  指定终端机编号,并列出属于该终端机的程序的状况。

t<终端机编号>   此参数的效果和指定的"-t"参数相同,只在列表格式方面稍有差异。

-T           显示现行终端机下的所有程序。

-u<用户标识码>  此参数的效果和指定的"-U"参数相同。

u            以用户为主的格式显示程序状况。

-U<用户标识码>  列出属于该用户的程序的状况,也可以使用用户名称来指定。

U<用户名称>     列出属于该用户的程序的状况。

v            采用虚拟内存的格式显示程序状况。

-V或V        显示版本信息。

-w或w        采用宽阔的格式来显示程序状况。

x            显示所有的程序,不以终端机来区分。

X            采用旧式的linux i386登陆格式显示程序状况。

-y           配合参数”-l“使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位。

-<程序识别码>   此参数的效果和指定的"p"参数相同。

--cols<每行字符数>      设置没列的最大字符数。

--headers    重复显示标题列。

--help       在线帮忙。

--info       显示排错信息。

--lines<显示列数>       设置显示画面的列数。

范例:

ps:

1
2
3
4
[root@qiufengsong ~] # ps
   PID TTY          TIME CMD
  3414 pts /1     00:00:00  bash
  3431 pts /1     00:00:00  ps

显示所有进程信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
[root@qiufengsong ~] # ps -A
   PID TTY          TIME CMD
     1 ?        00:00:02 init
     2 ?        00:00:00 kthreadd
     3 ?        00:00:00 ksoftirqd /0
     5 ?        00:00:00 kworker /u :0
     6 ?        00:00:01 migration /0
     7 ?        00:00:00 watchdog /0
     8 ?        00:00:00 migration /1
    10 ?        00:00:00 ksoftirqd /1
    11 ?        00:00:00 watchdog /1
    12 ?        00:00:00 cpuset
    13 ?        00:00:00 khelper
    14 ?        00:00:00 kdevtmpfs
    15 ?        00:00:00 netns
    16 ?        00:00:00 xenwatch
    17 ?        00:00:00 xenbus
    18 ?        00:00:00 sync_supers
    19 ?        00:00:00 bdi-default
    20 ?        00:00:00 kintegrityd
    21 ?        00:00:00 kblockd
    22 ?        00:00:00 ata_sff
    23 ?        00:00:00 khubd
    24 ?        00:00:00 md
    26 ?        00:00:00 khungtaskd
    27 ?        00:00:03 kswapd0
    28 ?        00:00:00 ksmd
    29 ?        00:00:00 fsnotify_mark
    30 ?        00:00:00 crypto
##########省略部分##########
[root@qiufengsong ~] # ps -e
   PID TTY          TIME CMD
     1 ?        00:00:02 init
     2 ?        00:00:00 kthreadd
     3 ?        00:00:00 ksoftirqd /0
     5 ?        00:00:00 kworker /u :0
     6 ?        00:00:01 migration /0
     7 ?        00:00:00 watchdog /0
     8 ?        00:00:00 migration /1
    10 ?        00:00:00 ksoftirqd /1
    11 ?        00:00:00 watchdog /1
    12 ?        00:00:00 cpuset
    13 ?        00:00:00 khelper
    14 ?        00:00:00 kdevtmpfs
    15 ?        00:00:00 netns
    16 ?        00:00:00 xenwatch
    17 ?        00:00:00 xenbus
    18 ?        00:00:00 sync_supers
    19 ?        00:00:00 bdi-default
    20 ?        00:00:00 kintegrityd

显示指定用户的进程信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@qiufengsong ~] # ps -u root
   PID TTY          TIME CMD
     1 ?        00:00:02 init
     2 ?        00:00:00 kthreadd
     3 ?        00:00:00 ksoftirqd /0
     5 ?        00:00:00 kworker /u :0
     6 ?        00:00:01 migration /0
     7 ?        00:00:00 watchdog /0
     8 ?        00:00:00 migration /1
    10 ?        00:00:00 ksoftirqd /1
    11 ?        00:00:00 watchdog /1
    12 ?        00:00:00 cpuset
    13 ?        00:00:00 khelper
    14 ?        00:00:00 kdevtmpfs
    15 ?        00:00:00 netns
[root@qiufengsong ~] # ps --user root
   PID TTY          TIME CMD
     1 ?        00:00:02 init
     2 ?        00:00:00 kthreadd
     3 ?        00:00:00 ksoftirqd /0
     5 ?        00:00:00 kworker /u :0
     6 ?        00:00:01 migration /0
     7 ?        00:00:00 watchdog /0
     8 ?        00:00:00 migration /1
    10 ?        00:00:00 ksoftirqd /1
    11 ?        00:00:00 watchdog /1
    12 ?        00:00:00 cpuset
    13 ?        00:00:00 khelper
    14 ?        00:00:00 kdevtmpfs
    15 ?        00:00:00 netns

详细显示程序的状况:

1
2
3
4
5
6
7
8
[root@qiufengsong ~]# ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4  S      0   3543   3538   0   80    0  27086  wait   pts/ 3     00 : 00 : 00  bash
0  R      0   3559   3543   0   80    0  27031  -      pts/ 3     00 : 00 : 00  ps
[root@qiufengsong ~]# ps -ly
S   UID   PID  PPID  C PRI  NI   RSS    SZ WCHAN  TTY          TIME CMD
S      0   3543   3538   0   80    0   1876  27086  wait   pts/ 3     00 : 00 : 00  bash
R      0   3565   3543   0   80    0    912  27031  -      pts/ 3     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     下达的指令

列出目前所有的正在内存当中程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@qiufengsong ~] # ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.3  19276  1508 ?        Ss   05:02   0:02  /sbin/init
root         2  0.0  0.0      0     0 ?        S    05:02   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    05:02   0:00 [ksoftirqd /0 ]
root         5  0.0  0.0      0     0 ?        S    05:02   0:00 [kworker /u :0]
root         6  0.0  0.0      0     0 ?        S    05:02   0:01 [migration /0 ]
root         7  0.0  0.0      0     0 ?        S    05:02   0:00 [watchdog /0 ]
root         8  0.0  0.0      0     0 ?        S    05:02   0:00 [migration /1 ]
root        10  0.0  0.0      0     0 ?        S    05:02   0:00 [ksoftirqd /1 ]
root        11  0.0  0.0      0     0 ?        S    05:02   0:00 [watchdog /1 ]
root        12  0.0  0.0      0     0 ?        S<   05:02   0:00 [cpuset]
root        13  0.0  0.0      0     0 ?        S<   05:02   0:00 [khelper]
root        14  0.0  0.0      0     0 ?        S    05:02   0:00 [kdevtmpfs]
root        15  0.0  0.0      0     0 ?        S<   05:02   0:00 [netns]
root        16  0.0  0.0      0     0 ?        S    05:02   0:00 [xenwatch]
root        17  0.0  0.0      0     0 ?        S    05:02   0:00 [xenbus]
root        18  0.0  0.0      0     0 ?        S    05:02   0:00 [sync_supers]
root        19  0.0  0.0      0     0 ?        S    05:02   0:00 [bdi-default]
root        20  0.0  0.0      0     0 ?        S<   05:02   0:00 [kintegrityd]
root        21  0.0  0.0      0     0 ?        S<   05:02   0:00 [kblockd]
####通常与grep联合使用查找特定进程####
[root@qiufengsong ~] # ps aux | grep ssh
root      1090  0.0  0.2  64164  1196 ?        Ss   05:03   0:00  /usr/sbin/sshd
root      1513  0.2  0.9  98016  4048 ?        Ss   05:05   0:16 sshd: root@pts /0
root      3410  0.0  0.9  97908  3880 ?        Ss   06:16   0:00 sshd: root@pts /1
root      3437  0.1  0.9  98052  3876 ?        Ss   06:23   0:01 sshd: root@pts /2
root      3538  0.0  0.9  97908  3880 ?        Ss   06:26   0:00 sshd: root@pts /3
root      3597  0.4  0.9  97908  3880 ?        Ss   06:35   0:00 sshd: root@pts /4
root      3630  0.0  0.2 103288   832 pts /3     S+   06:37   0:00  grep  ssh

USER       该进程属于那个使用者账号的

PID        该进程的号

%CPU       该进程使用掉的 CPU 资源百分比

%MEM       该进程所占用的物理内存百分比

VSZ        该进程使用掉的虚拟内存量(KB)

RSS        该进程占用的固定的内存量(KB)

TTY        该进程是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。

STAT       该程序目前的状态,主要的状态有

R          该程序目前正在运作,或者是可被运作

S          该程序目前正在睡眠当中,但可被某些讯号唤醒。

T          该程序目前正在侦测或者是停止了

Z          该程序应该已经终止,但是其父程序却无法正常的终止他,造成僵死程序的状态

START      该进程被触发启动的时间

TIME       该进程实际使用CPU运作的时间

COMMAND    该程序的实际指令

与其他函数联系使用:

1
2
3
4
5
6
[root@qiufengsong ~] # ps aux | grep ssh
root      1483  0.0  0.2  64164  1152 ?        Ss   06:41   0:00  /usr/sbin/sshd
root      1737  3.4  0.9  97908  3876 ?        Ss   06:41   0:01 sshd: root@pts /1
root      1927  0.0  0.2 103288   832 pts /1     S+   06:42   0:00  grep  ssh
[root@qiufengsong ~] # ps aux | grep ssh | wc -l
3

说明:

ps是用来报告程序执行状况的指令,可以搭配kill指令随时中断,删除不必要的程序。

更多关于kill指令的介绍请关注下篇博文。


本文转自 z永 51CTO博客,原文链接:http://blog.51cto.com/pangge/1330943


相关文章
|
7月前
|
Linux
百度搜索:蓝易云【Linux系统ps命令:查看正在运行的进程】
通过这些简洁的ps命令用法,你可以方便地查看Linux系统中正在运行的进程信息。
90 1
|
7月前
|
存储 监控 Linux
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
130 0
|
6月前
|
监控 Linux 应用服务中间件
探索Linux中的`ps`命令:进程监控与分析的利器
探索Linux中的`ps`命令:进程监控与分析的利器
136 13
|
3月前
|
调度
crash命令 —— ps
crash命令 —— ps
|
4月前
|
存储 Docker 容器
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?
|
4月前
|
开发工具
【Azure 环境】使用Microsoft Graph PS SDK 登录到中国区Azure, 命令Connect-MgGraph -Environment China xxxxxxxxx 遇见登录错误
【Azure 环境】使用Microsoft Graph PS SDK 登录到中国区Azure, 命令Connect-MgGraph -Environment China xxxxxxxxx 遇见登录错误
|
5月前
|
监控 Unix Linux
ps aux 命令使用查看内存、cpu使用排名与top的区别
ps aux 命令使用查看内存、cpu使用排名与top的区别
779 1
|
6月前
|
开发框架 安全 .NET
【权限提升】Win本地用户&进程注入&令牌窃取&AT&SC&PS服务命令
【权限提升】Win本地用户&进程注入&令牌窃取&AT&SC&PS服务命令
|
7月前
|
Linux
Linux系统ps命令
这些是一些常见的 `ps`命令选项和用法,用于查看系统中运行的进程及其相关信息。您可以根据需要选择合适的选项以满足您的任务要求。
512 0
|
7月前
|
运维 监控 Linux
【专栏】Docker命令`docker ps`的使用,包括列出运行中的容器、筛选特定容器、组合使用与其他命令配合以及在故障排查中的应用
【4月更文挑战第28天】本文介绍了Docker命令`docker ps`的使用,包括列出运行中的容器、筛选特定容器、组合使用与其他命令配合以及在故障排查中的应用。通过基础和高级用法示例,如列出所有容器、搜索特定镜像、监控资源使用等,帮助读者理解和提升容器管理效率。对于Linux运维工程师,掌握`docker ps`是必备技能。
757 0