ps [选项]

  报告当前进程状态。ps显示有关选择的活动进程的信息。如果要重复更新选择和显示的信息,请使用top。ps命令可以搭配kill随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些正在运行和运行的状态、进程是否结束、进程有没有僵死、呢些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。

  进程是已启动的可执行程序的运行实例。

(1).常用选项

-A 显示所有进程
-e 显示所有进程,和-A一样
-f 完整格式显示
-u userlist 显示指定用户的进程信息,userlist必须是有效用户ID或名称
u 基于用户的格式显示
-a 显示除会话引导程序和与终端无关的进程之外所的所有进程
a 显示具有终端 (tty)的所有进程,或与x选项一起使用时显示所有进程
x 显示当前用户(有效用户ID)所拥有的进程,类似EUID,或与a选项一起使用时,显示所有进程
-H 显示进程层次结构(树状)
-j BDSM作业控制格式
j 作业格式

  最常用的应该就是ps aux或ps -ef。ps aux表示用BSD格式显示进程,ps -ef表示用标准格式显示进程。

(2).实例

1)显示所有进程

[root@CentOS6 桌面]# ps -e | more -20    //more后面不加数值则会自动填满屏幕,<Enter>键是一行,<Space>是一页
PID TTY TIME CMD
1 ? 00:00:02 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
4 ? 00:00:00 ksoftirqd/0
5 ? 00:00:00 stopper/0
6 ? 00:00:00 watchdog/0
7 ? 00:00:00 migration/1
8 ? 00:00:00 stopper/1
9 ? 00:00:00 ksoftirqd/1
10 ? 00:00:00 watchdog/1
11 ? 00:00:09 events/0
12 ? 00:00:01 events/1
13 ? 00:00:00 events/0
14 ? 00:00:00 events/1
15 ? 00:00:00 events_long/0
16 ? 00:00:00 events_long/1
17 ? 00:00:00 events_power_ef
18 ? 00:00:00 events_power_ef
19 ? 00:00:00 cgroup
--More--

2)显示指定用户的进程信息

[root@CentOS6 桌面]# ps -u root | more -10
PID TTY TIME CMD
1 ? 00:00:02 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
4 ? 00:00:00 ksoftirqd/0
5 ? 00:00:00 stopper/0
6 ? 00:00:00 watchdog/0
7 ? 00:00:00 migration/1
8 ? 00:00:00 stopper/1
9 ? 00:00:00 ksoftirqd/1
--More--

3)ps a和ps -a的区别

[root@CentOS6 桌面]# ps a
PID TTY STAT TIME COMMAND
2013 tty2 Ss+ 0:00 /sbin/mingetty /dev/tty2
2020 tty3 Ss+ 0:00 /sbin/mingetty /dev/tty3
2030 tty4 Ss+ 0:00 /sbin/mingetty /dev/tty4
2033 tty5 Ss+ 0:00 /sbin/mingetty /dev/tty5
2035 tty6 Ss+ 0:00 /sbin/mingetty /dev/tty6
2053 tty1 Ssl+ 2:26 /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/ru
4428 pts/1 Ss 0:00 /bin/bash
4438 pts/1 T 0:00 more -10
4449 pts/1 R+ 0:00 ps a
[root@CentOS6 桌面]# ps –a
PID TTY TIME CMD
4438 pts/1 00:00:00 more
4450 pts/1 00:00:00 ps

4)显示所有进程包括命令行

[root@CentOS6 桌面]# ps -ef | more -10
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 14:10 ? 00:00:02 /sbin/init
root 2 0 0 14:10 ? 00:00:00 [kthreadd]
root 3 2 0 14:10 ? 00:00:00 [migration/0]
root 4 2 0 14:10 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 14:10 ? 00:00:00 [stopper/0]
root 6 2 0 14:10 ? 00:00:00 [watchdog/0]
root 7 2 0 14:10 ? 00:00:00 [migration/1]
root 8 2 0 14:10 ? 00:00:00 [stopper/1]
root 9 2 0 14:10 ? 00:00:00 [ksoftirqd/1]
--More--

说明:
UID 程序被该 UID 所拥有
PID 就是这个程序的 ID !
PPID 则是其上级父程序的ID
C CPU 使用的资源百分比
STIME 进程启动的系统时间
TTY 登入者的终端机位置。如果显示?表示与终端无关,一般是内核进程。tty1~tty6是本机上登入者程序;pts/0等表示运行在虚拟终端上的进程。
TIME 使用掉的 CPU 时间。
CMD 所下达的指令为何

5)ps和grep结合起来查找进程

[root@CentOS6 桌面]# ps -ef|more -5
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 14:10 ? 00:00:02 /sbin/init
root 2 0 0 14:10 ? 00:00:00 [kthreadd]
root 3 2 0 14:10 ? 00:00:00 [migration/0]
root 4 2 0 14:10 ? 00:00:00 [ksoftirqd/0]
--More—
[2]+ Stopped ps -ef | more -5
[root@CentOS6 桌面]# ps -ef |grep ksoftirqd/0
root 4 2 0 14:10 ? 00:00:00 [ksoftirqd/0]
root 4534 4484 0 18:54 pts/0 00:00:00 grep ksoftirqd/0

6)将目前属于您这次登录的PID与相关信息列出来

[root@CentOS6 桌面]# ps –l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 4568 4566 0 80 0 - 27087 wait pts/0 00:00:00 bash
4 R 0 4578 4568 0 80 0 - 27035 - pts/0 00:00:00 ps

说明:
F 代表这个程序的旗标 (flag), 4 代表使用者为 super user
S 代表这个程序的状态 (STAT),关于各 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。

7)显示进程间的关系

[root@CentOS6 桌面]# ps f
PID TTY STAT TIME COMMAND
4568 pts/0 Ss 0:00 /bin/bash
4630 pts/0 R+ 0:00 \_ ps f
2053 tty1 Ssl+ 2:48 /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/ru
2035 tty6 Ss+ 0:00 /sbin/mingetty /dev/tty6
2033 tty5 Ss+ 0:00 /sbin/mingetty /dev/tty5
2030 tty4 Ss+ 0:00 /sbin/mingetty /dev/tty4
2020 tty3 Ss+ 0:00 /sbin/mingetty /dev/tty3
2013 tty2 Ss+ 0:00 /sbin/mingetty /dev/tty2

8)列出目前所有正在内存中的程序

[root@CentOS6 桌面]# ps aux | more -10
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 19352 1552 ? Ss 14:10 0:02 /sbin/init
root 2 0.0 0.0 0 0 ? S 14:10 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 14:10 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S 14:10 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S 14:10 0:00 [stopper/0]
root 6 0.0 0.0 0 0 ? S 14:10 0:00 [watchdog/0]
root 7 0.0 0.0 0 0 ? S 14:10 0:00 [migration/1]
root 8 0.0 0.0 0 0 ? S 14:10 0:00 [stopper/1]
root 9 0.0 0.0 0 0 ? S 14:10 0:00 [ksoftirqd/1]
--More--

说明:
USER:该 process 属于哪一个个使用者账号的
PID :该 process 的号码
%CPU:该 process 使用掉的 CPU 资源百分比
%MEM:该 process 所占用的物理内存百分比
VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
RSS :该 process 占用的固定的内存量 (Kbytes)
TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:该程序目前的状态,Linux进程有5个基本状态
  R :该程序目前正在运作,或者是可被运作
  S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。
  T :该程序目前正在侦测或者是停止了
  Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
  D :该程序不可中断
  5个基本状态后还可以跟随一些其他状态,如下:<表示进程运行在高优先级上;N表示进程运行在低优先级上;L表示进程有页面锁定在内存中;s表示进程是控制进程;l表示进程是多线程;+表示当前进程在前台运行
START:该 process 被触发启动的时间
TIME :该 process 实际使用 CPU 运作的时间,单位秒
COMMAND:该程序的实际指令

9)列出类似程序树的程序显示

[root@CentOS6 桌面]# ps -axjf | more -10
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 \_ [stopper/0]
2 6 0 0 ? -1 S 0 0:00 \_ [watchdog/0]
2 7 0 0 ? -1 S 0 0:00 \_ [migration/1]
2 8 0 0 ? -1 S 0 0:00 \_ [stopper/1]
2 9 0 0 ? -1 S 0 0:00 \_ [ksoftirqd/1]
2 10 0 0 ? -1 S 0 0:00 \_ [watchdog/1]
--More--

(3).扩展

进程的生命周期:

描述如下:

  父进程复制自己的地址空间(fork分叉)创建一个新的(子)进程结构。每个新的进程分配一个唯一的进程ID(PID),满足跟踪安全性需求。PID和父进程ID(PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代。

  CentOS5或CentOS6的PID为1的进程是init。CentOS7的PID为1的进程是systemd。

1)什么是僵尸进程

  一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵尸进程。

  通俗来讲就是父进程退出,而子进程没有退出,那么这些子进程没有父进程来管理,就变成了僵尸进程。

2)进程的属性

进程ID(PID),是唯一的数值,用来区分进程

父进程ID(PPID)

启动进程的用户ID(UID)和所属组(GID)

进程状态,运行R、休眠S、僵尸Z

进程执行的优先级

进程所连接的终端名

进程资源占用,比如占用资源大小(内存、CPU占用量)

(4).扩展pstree命令

  pstree [选项] [PID或用户名]

  以树状图显示进程,默认情况下只显示进程的名字,且相同进程合并显示。很少使用。

  在没有任何参数的情况下,默认显示如下

[xf@xuexi ~]$ pstree | more -10
systemd-+-ModemManager---2*[{ModemManager}]
|-NetworkManager-+-dhclient
| `-2*[{NetworkManager}]
|-VGAuthService
|-abrt-dbus---2*[{abrt-dbus}]
|-2*[abrt-watch-log]
|-abrtd
|-accounts-daemon---2*[{accounts-daemon}]
|-alsactl
|-anacron
--More--

  如果想要PID,可以使用选项-p

[xf@xuexi ~]$ pstree -p | more -10
systemd(1)-+-ModemManager(6833)-+-{ModemManager}(6858)
| `-{ModemManager}(6877)
|-NetworkManager(6988)-+-dhclient(7291)
| |-{NetworkManager}(6995)
| `-{NetworkManager}(6998)
|-VGAuthService(6831)
|-abrt-dbus(9962)-+-{abrt-dbus}(9963)
| `-{abrt-dbus}(9965)
|-abrt-watch-log(6848)
|-abrt-watch-log(6887)
--More--

  

Linux命令之ps的更多相关文章

  1. Linux命令:ps / top

    简介:ps - report a snapshot of the current processes. 用途:获取当前时刻程序运行状态 概要:ps [options] 类型:ps is hashed ...

  2. linux命令之ps命令

    1.管道 linux命令管道通过|表示.一般在linux命令中|(管道)之前的命令会输出大量的结果,|(管道)之后的命令一般就是带有条件的,只将|前满足条件的结果显示出来. 2.grep命令 grep ...

  3. 每天一个linux命令(53)--ps命令

    要毁掉一天,从早上开始. Linux中的ps命令是 process status 的缩写.ps 命令用来列出系统中当前运行的那些进程.ps 命令列出的是当前那些进程的快照,就是执行ps 命令的那个时刻 ...

  4. Linux命令:ps

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

  5. linux 命令——41 ps(转)

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

  6. Linux命令学习-ps命令

    Linux中,ps命令的全称是process status,即进程状态的意思,主要作用是列出系统中当前正在运行的进程信息. ps命令的功能很强大,参数也非常多,下面只举几个简单的实例. 显示所有进程信 ...

  7. 每天一个linux命令:ps命令

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

  8. Linux命令之-ps & kill

    1.ps:将某个进程显示出来: 常用命令 :ps -ef |grep Java 1)如下为加不加-e参数的区别 2.一般我们查找某个进程的目的就是把它杀掉,使用kill 命令. kill -9 564 ...

  9. linux命令学习——ps

    1.命令简介 ps命令用来查看系统上的进程信息.要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定 ...

  10. Linux命令:ps,netstat,top

    ps ps用于查看当前运行的进程.如果想查看动态的进程信息,可以使用top命令.查看详细命令帮助使用man ps. ps最常用的选项组合就是ps aux: # ps aux USER PID %CPU ...

随机推荐

  1. water 解题报告

    water 题目描述 有一块矩形土地被划分成\(n\times m\)个正方形小块.这些小块高低不平,每一小块都有自己的高度.水流可以由任意一块地流向周围四个方向的四块地中,但是不能直接流入对角相连的 ...

  2. vue父组件中修改子组件样式

    1. 使用全局样式 <style> /* 全局样式 */ </style> <style scoped> /* 本地样式 */ </style> 2. ...

  3. 【BZOJ 1124】[POI2008] 枪战Maf Tarjan+树dp

    #define int long long using namespace std; signed main(){ 这个题一看就是图论题,然后我们观察他的性质,因为一个图论题如果没有什么性质,就是真· ...

  4. 【BZOJ1458】士兵占领 最大流的模板题

    我们只要把他们可以有的限制用流量限制,再用两者关系限制一下就可以开心的跑了. #include <cstdio> #include <cstring> #include < ...

  5. 淡入淡出效果的js原生实现

    淡入淡出效果,在日常项目中经常用到,可惜原生JS没有类似的方法,而有时小的页面并不值得引入一个jQuery库,所以就自己写了一个,已封装, 有用得着的朋友, 可以直接使用. 代码中另附有一个设置元素透 ...

  6. Hyperledger Fabric架构详解

    区块链开源实现HYPERLEDGER FABRIC架构详解 区块链开源实现HYPERLEDGER FABRIC架构详解 2018年5月26日 陶辉 Comments 10 Comments hyper ...

  7. Educational Codeforces Round 59 (Rated for Div. 2) DE题解

    Educational Codeforces Round 59 (Rated for Div. 2) D. Compression 题目链接:https://codeforces.com/contes ...

  8. HDU 多校对抗赛 D Distinct Values

    Distinct Values Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  9. 【BZOJ1468】Tree [点分治]

    Tree Time Limit: 10 Sec  Memory Limit: 64 MB[Submit][Status][Discuss] Description 给你一棵TREE,以及这棵树上边的距 ...

  10. 【BZOJ】ARC083 E - Bichrome Tree

    [算法]树型DP [题意]给定含n个点的树的形态,和n个数字Xv,要求给每个点赋予黑色或白色和权值,满足对于每个点v,子树v中和v同色的点的权值和等于Xv.n<=10^5 [题解]首先每个点的权 ...