Linux进程控制命令之ps

  • 无参数
    默认情况下只显示在当前终端下执行的进程,不显示其他终端的信息,而且显示的信息只有4列,如下:

    m@meng:~$ ps
    PID TTY          TIME CMD
    17742 pts/14   00:00:00 bash
    30496 pts/14   00:00:00 ps

    四列信息的含义分别是:
    PID: 运行着的命令(CMD)的进程编号
    TTY: 命令所运行的位置(终端)
    TIME: 运行着的该命令所占用的CPU处理时间
    CMD: 该进程所运行的命令

  • 参数-l和-f
    想要得到更多信息就需要加上这两个参数之一,如下:

    m@meng:~$ ps -l
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    0 S  1000 17742 14494  0  80   0 -  2433 wait   pts/14   00:00:00 bash
    0 R  1000 30507 17742  0  80   0 -  1665 -      pts/14   00:00:00 ps

    多出来的列的含义为:
    F:进程的旗标,又称信号量,用于进程互斥加锁等,暂时不考虑;
    S:进程的状态(S代表休眠,R代表可运行,Z代表僵尸进程,T代表停止,0代表正在运行)
    UID:用户id,PPID:父进程id
    C:CPU利用率
    PRI:进程的优先级
    NI:nice值,又叫谦让度。。。
    ADDR:进程的内存地址
    SZ:加入进程被换出,所需交换空间的大小
    WCHAR:进程是否正在运行,若是,则为“-”,跟S的作用类似
    TIME:运行进程所需的总CPU时间
    好吧,这些信息很多暂时都用不上或者理解不了,别着急,慢慢来,早晚会用上的.

        m@meng:~$ ps -f
        UID        PID  PPID  C STIME TTY          TIME CMD
        m        17742 14494  0  528 pts/14 00:00:00 bash
        m        32105 17742  0 11:55 pts/14   00:00:00 ps -f

    -f显示的信息要少一些,而且有部分不同。
    主要就是STIME,它的含义是该进程被触发的时间或它启动的时间。

  • 参数-A和-e,它们的作用是相同的,都是用来显示全部的进程,而不仅仅是当前终端下的进程,还包括没有在终端运行的进程。
  • 参数 -a,这个参数很神奇,反正我是没弄懂,man上的信息是:Select all processes except both session leaders (see getsid(2)) and processes not associated with a terminal.大概意思是说,显示除控制进程(session leader)和无终端的进程外所有进程。看个例子:

    m@meng:~$ ps -a
    PID TTY          TIME CMD
    24056 pts/18   00:00:00 ps

    我们知道有些进程无须借助终端来运行,它们的TTY这一列显示为“?”,-a选项会过滤掉这类进程;同时-a还会过滤掉控制进程,到底什么是控制进程呢?莫非就是终端本身?如果不加-a参数,结果如下:

       m@meng:~$ ps
       PID TTY          TIME CMD
       23962 pts/18   00:00:00 bash
       24062 pts/18   00:00:00 ps

    这个理解也许是对的。

  • 参数 -d:和-a类似,只不过它不会过滤无终端进程,而只是过滤控制进程——终端。
  • 参数 -u:显示有效用户ID在userlist列表中的进程。这个其实也不太好理解,他后面需要跟一个用户名称,表示只显示该用户相关的进程。但是如果-u后面没有跟用户名,其效果就跟“ps u”是一样的(注意这里的u没有短横线),这也是ps命令复杂的地方,对某些参数有没有短横线差别很大。
    ps u表示Display user-oriented format.如下:

    m@meng:~$ ps u
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    m        24187  0.0  0.1   9732  4324 pts/14   Ss   16:40   0:00 bash
    m        24245  0.0  0.0   6896  1152 pts/14   R+   16:50   0:00 ps u

    -u经常和-a一起使用,但这时候-a的意思和前面单独使用时是不一样的。总之,-au == -a -u == au,a在这些组合中的意思是all。(好复杂的说。。)

  • 参数-p,后面跟进程id,显示特定进程的信息,等价于没有短横线的p。还有一些进程可以直接将其id放在短横线后面,如:

      m@meng:~$ ps -1
      PID TTY      STAT   TIME COMMAND
      1 ?        Ss     0:02 /sbin/init
  • 参数-C:后面跟某个命令或程序的全名,显示相关信息。
  • 参数x:通常与 au一起使用,可列出较完整信息。我截取了一部分:

    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.0   4584  2580 ?        Ss    5月28   0:02 /sbin/init
    root         2  0.0  0.0      0     0 ?        S     5月28   0:00 [kthreadd]
    root         3  0.2  0.0      0     0 ?        S     5月28  10:10 [ksoftirqd/0]
    root         4  0.0  0.0      0     0 ?        S     5月28   0:00 [kworker/0:0]

    似乎比-f和-l还要详细。

    呃,写到这里已经晕了,参数实在太多,我想以后会根据实际需求再来重新整理一遍。主要的其实就是下面两个组合:
    ps -ef
    ps aux
    然后配合grep用管道撷取相关的进程信息。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值