您的位置:首页 > 其它

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

2013-11-24 23:09 260 查看
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:

[root@qiufengsong ~]# ps
PID TTY          TIME CMD
3414 pts/1    00:00:00 bash
3431 pts/1    00:00:00 ps
显示所有进程信息:

[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
显示指定用户的进程信息

[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
详细显示程序的状况:

[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 下达的指令
列出目前所有的正在内存当中程序:

[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 该程序的实际指令
与其他函数联系使用:

[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指令的介绍请关注下篇博文。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  进程 ps命令