• ps命令介绍


    ps是收集进程信息的重要工具。它提供的信息包括:拥有进程的用户、进程的起始时间、进程所对应的命令行路径、进程ID(PID)、进程所属的终端(TTY)、进程使用的内存、进程占用的CPU等。例如:

    $ ps
    PID  TTY   TIME     CMD
    8116 pts/3 00:00:00 bash
    8743 pts/3 00:00:00 ps

    ps命令通常结合一系列参数使用。如果不使用任何参数,ps将显示运行在当前终端(TTY)中的进程。第一列显示进程ID(PID),第二列是TTY(终端),第三列是进程启动后过去的时间,最后一列是CMD(进程所对应的命令)。

    上面的ps命令没有什么用处,因为它没有提供当前终端外的任何进程信息。要获取运行在系统中的没一个进程的信息,使用选项-e(every)。选项-ax(all)也可以生成同样的输出。运行ps -ef:

    $ ps -ef | head
    UID        PID  PPID  C STIME TTY          TIME CMD
    root         1     0  0 18:45 ?        00:00:00 /sbin/init
    root         2     0  0 18:45 ?        00:00:00 [kthreadd]
    root         3     2  0 18:45 ?        00:00:08 [ksoftirqd/0]
    root         6     2  0 18:45 ?        00:00:06 [migration/0]
    root         7     2  0 18:45 ?        00:00:00 [watchdog/0]
    root        12     2  0 18:45 ?        00:00:00 [cpuset]
    root        13     2  0 18:45 ?        00:00:00 [khelper]
    root        14     2  0 18:45 ?        00:00:00 [kdevtmpfs]
    root        15     2  0 18:45 ?        00:00:00 [netns]

    输出列表很长,我们使用head进行了过滤,所以只列出了前10项。

    ps命令支持显示除进程名及进程ID之外的多种信息。ps默认在不同的列中显示这些信息。这些信息中的大多数对我们来说没什么用处。我们可以用-o来指定想要显示的列,与进程相关的参数可以通过与此参数对应的命令选项指定:

    $ ps [OTHER OPTIONS] -o parameter1,parameter2,parameter3...

    -o的参数以逗号操作符(,)作为定界符。值得注意的是逗号操作符与它分隔的参数之间是没有空格的。在大多数情况下,选项-o都是和选项-e(every)结合使用的(-oe),因为它需要列出运行在系统中的每一个进程。但是如果-o需要使用某些过滤器,例如列出特定用户拥有的进程,那么就不再使用-e。-e和过滤器结合使用将没有任何实际效果,依旧会显示所有的进程。

    示例如下。其中comm表示COMMAND,pcpu表示CPU占用率:

    $ ps -eo comm,pcpu | head
    COMMAND         %CPU
    init             0.0
    kthreadd         0.0
    ksoftirqd/0      0.0
    migration/0      0.0
    watchdog/0       0.0
    cpuset           0.0
    khelper          0.0
    kdevtmpfs        0.0
    netns            0.0

    可以用--sort将ps命令的输出根据特定的列进行排序。

    可以在参数前加上+(升序)或-(降序)来指定排序方式:

    $ ps [OPTIONS] --sort -parameter1,+parameter2,parameter3...

    例如,要列出占用CPU最多的10个进程,可以使用:

    $ ps -eo comm,pcpu --sort -pcpu | head
    COMMAND         %CPU
    chromium-browse  6.4
    chromium-browse  4.1
    Xorg             3.8
    compiz           2.1
    aptd             2.1
    pulseaudio       0.7
    ibus-daemon      0.5
    kworker/1:1      0.3
    top              0.3

    我们还可以用grep从ps的输出中提取与给定进程名或其他参数相关的条目。要找出与bash进程相关的条目,可以使用:

    $ ps -eo comm,pid,pcpu,pmem | grep bash
    bash             6127  0.0  0.1
    bash             8116  0.0  0.2

    假如一个命令有多个实例正在运行,我们可能需要识别这些进程的进程ID。这个信息可以使用ps或pgrep命令得到。按照下面的方式使用ps:

    $ ps -C COMMAND_NAME
    或者
    $ ps -C COMMAND_NAME -o pid=
    $ ps -C bash -o pid=
     6127
     8116

    pgrep可以获得一个特定命令的进程的ID列表:

    $ pgrep bash
    6127
    8116

    我们还可以用选项-L在ps输出中显示线程的相关信息。这会显示出两列:NLWP和NLP。NLWP是进程的线程数量,NLP是ps输出中的每个条目的线程ID:

    ~$ ps -efL --sort -nlwp | head
    UID        PID  PPID   LWP  C NLWP STIME TTY          TIME CMD
    root      1281     1  1281  0   65 Jan05 ?        00:00:00 /usr/sbin/console-kit-daemon --no-daemon
    root      1281     1  1282  0   65 Jan05 ?        00:00:00 /usr/sbin/console-kit-daemon --no-daemon
    root      1281     1  1283  0   65 Jan05 ?        00:00:00 /usr/sbin/console-kit-daemon --no-daemon
    root      1281     1  1284  0   65 Jan05 ?        00:00:00 /usr/sbin/console-kit-daemon --no-daemon
    root      1281     1  1285  0   65 Jan05 ?        00:00:00 /usr/sbin/console-kit-daemon --no-daemon
    root      1281     1  1286  0   65 Jan05 ?        00:00:00 /usr/sbin/console-kit-daemon --no-daemon
    root      1281     1  1287  0   65 Jan05 ?        00:00:00 /usr/sbin/console-kit-daemon --no-daemon
    root      1281     1  1288  0   65 Jan05 ?        00:00:00 /usr/sbin/console-kit-daemon --no-daemon
    root      1281     1  1289  0   65 Jan05 ?        00:00:00 /usr/sbin/console-kit-daemon --no-daemon

    该命令列出了线程数最多的10个进程。

  • 相关阅读:
    POJ Problem 2631 Roads in the North【树的直径】
    POJ Problem 1985 Cow Marathon 【树的直径】
    Light OJ 1049 Farthest Nodes in a Tree【树的直径】
    HDU Problem 4707 Pet【并查集】
    HDU Problem 1325 Is It A Tree?【并查集】
    HDU Problem 5631 Rikka with Graph【并查集】
    HDU Problem 5326 Work 【并查集】
    文件比较软件修改比较文件时间戳方法
    什么是Oracle 数据泵
    文件对比工具文件上传 FTP如何匹配本地文件
  • 原文地址:https://www.cnblogs.com/bettercoder/p/3506482.html
Copyright © 2020-2023  润新知