什么ps -e -o user:20,pid是什么意思?

时间:2017-09-24 17:30:31

标签: shell unix

我有一个已编写的脚本,其中包含此行PID = ps -e -o user:20,pid,cmd

有人可以解释一下这条线的含义吗?我对用户有点困惑:20部分

谢谢!

3 个答案:

答案 0 :(得分:2)

ps是一个命令名,用于显示系统当前中运行的进程

-e是"短"选项,这意味着应列出所有进程。

-o user:20,pid,cmd是一个选项,用于设置要在屏幕上打印的行的预期格式,即我们希望第一列包含填充为20个字符的用户名(谁拥有进程),第二列显示进程ID,第三列包含用于启动进程的命令名。就是这样。

此外,您只需尝试在终端中自行运行:ps -e -o user:20,pid,cmd,看看会发生什么。

答案 1 :(得分:1)

来自ps的手册页:

   -o format
          User-defined format.  format is a single argument in the form of a blank-separated or comma-separated list, which offers a way to specify
          individual output columns.  The recognized keywords are described in the STANDARD FORMAT SPECIFIERS section below.  Headers may be renamed (ps
          -o pid,ruser=RealUser -o comm=Command) as desired.  If all column headers are empty (ps -o pid= -o comm=) then the header line will not be
          output.  Column width will increase as needed for wide headers; this may be used to widen up columns such as WCHAN (ps -o pid,wchan=WIDE-
          WCHAN-COLUMN -o comm).  Explicit width control (ps opid,wchan:42,cmd) is offered too.  The behavior of ps -o pid=X,comm=Y varies with
          personality; output may be one column named "X,comm=Y" or two columns named "X" and "Y".  Use multiple -o options when in doubt.  Use the
          PS_FORMAT environment variable to specify a default as desired; DefSysV and DefBSD are macros that may be used to choose the default UNIX or
          BSD columns.

Explicit width control (ps opid,wchan:42,cmd) is offered too.

因此,您将获得一个带有20个字符宽度的user列。

答案 2 :(得分:0)

  

ps - 此命令报告当前进程的快照。

     

-e ,此选项有助于选择所有进程。对-A的指示。

     

-o ,此选项有助于指定用户定义的格式。

     

用户:20 ,   这将有助于格式化ps命令的输出。 user:20 将在列之间添加一些额外的20个空格字符。下面的示例将帮助您找到差异。

jdeveloper@jdeveloper ~ $ ps -e -o user:20,pid
    USER                   PID
    root                  2926
    jdeveloper            2948
    root                  3255
    root                  3570
    root                  3802
    jdeveloper            3825
    jdeveloper            3860

现在,让我们尝试使用10个字符空间填充作为响应。

jdeveloper@jdeveloper ~ $ ps -e -o user:10,pid
USER         PID
root        2926
jdeveloper  2948
root        3255
root        3570
root        3802
jdeveloper  3825
jdeveloper  3863

使用man命令查找有关ps命令的更多信息。尝试

jdeveloper@jdeveloper ~ $ man ps

希望它会对你有所帮助。