ps 命令:带有“O”选项的奇怪行为,额外的列/标题未按预期显示

ps 命令:带有“O”选项的奇怪行为,额外的列/标题未按预期显示

关于该ps命令 - 根据命令使用的选项添加一个/多个带有默认标题的额外列/标题ps- 通过O该选项。

介绍

如果ps x执行则输出如下:

  PID TTY      STAT   TIME COMMAND
 1677 ?        Ss     0:00 /lib/systemd/systemd --user
 1679 ?        S      0:00 (sd-pam)
 1704 tty1     S+     0:00 -bash
 1961 tty4     S      0:00 -bash
 1973 tty4     S+     0:00 man ps
 1983 tty4     S+     0:00 pager
 2227 ?        S      0:00 sshd: manueljordan@pts/0
 2228 pts/0    Ss     0:00 -bash
 2307 ?        S      0:01 sshd: manueljordan@pts/1
 2308 pts/1    Ss     0:00 -bash
 2407 ?        S      0:00 sshd: manueljordan@pts/2
 2408 pts/2    Ss     0:00 -bash
 2437 pts/2    S+     0:00 less
 2846 pts/1    S+     0:00 man ps
 2856 pts/1    S+     0:00 pager
 2968 pts/0    R+     0:00 ps x 

出现,我们知道默认的列/标题集。

如何执行简单的确认 - ifps xO %cpu输出如下:

  PID %CPU S TTY          TIME COMMAND
 1677  0.0 S ?        00:00:00 systemd
 1679  0.0 S ?        00:00:00 (sd-pam)
 1704  0.0 S tty1     00:00:00 bash
 1961  0.0 S tty4     00:00:00 bash
 1973  0.0 S tty4     00:00:00 man
 1983  0.0 S tty4     00:00:00 pager
 2227  0.0 S ?        00:00:00 sshd
 2228  0.0 S pts/0    00:00:00 bash
 2307  0.0 S ?        00:00:01 sshd
 2308  0.0 S pts/1    00:00:00 bash
 2407  0.0 S ?        00:00:00 sshd
 2408  0.0 S pts/2    00:00:00 bash
 2437  0.0 S pts/2    00:00:00 less
 2846  0.0 S pts/1    00:00:00 man
 2856  0.0 S pts/1    00:00:00 pager
 2969  0.0 R pts/0    00:00:00 ps

到这里一切都好。没有理由创建此帖子

因此理论上可以添加任何HEADER基于其各自的CODE- 它根据该STANDARD FORMAT SPECIFIERS部分,它可以通过 获得man ps

现在感谢这个问题的经验:

显示PSR列/标题。

情况

如果ps xO psr执行则输出如下:

  PID TTY      STAT   TIME COMMAND
 1677 ?        Ss     0:00 /lib/systemd/systemd --user
 1679 ?        S      0:00 (sd-pam)
 1704 tty1     S+     0:00 -bash
 1961 tty4     S      0:00 -bash
 1973 tty4     S+     0:00 man ps
 1983 tty4     S+     0:00 pager
 2227 ?        S      0:00 sshd: manueljordan@pts/0
 2228 pts/0    Ss     0:00 -bash
 2307 ?        S      0:01 sshd: manueljordan@pts/1
 2308 pts/1    Ss     0:00 -bash
 2407 ?        S      0:00 sshd: manueljordan@pts/2
 2408 pts/2    Ss     0:00 -bash
 2437 pts/2    S+     0:00 less
 2846 pts/1    S+     0:00 man ps
 2856 pts/1    S+     0:00 pager
 2975 pts/0    R+     0:00 ps xO psr

如果你意识到这样PSR不是出现,为什么?

但如果ps xO %cpu,psr执行的话输出是:

  PID %CPU PSR S TTY          TIME COMMAND
 1677  0.0   1 S ?        00:00:00 systemd
 1679  0.0   2 S ?        00:00:00 (sd-pam)
 1704  0.0   1 S tty1     00:00:00 bash
 1961  0.0   0 S tty4     00:00:00 bash
 1973  0.0   1 S tty4     00:00:00 man
 1983  0.0   2 S tty4     00:00:00 pager
 2227  0.0   3 S ?        00:00:00 sshd
 2228  0.0   3 S pts/0    00:00:00 bash
 2307  0.0   3 S ?        00:00:01 sshd
 2308  0.0   3 S pts/1    00:00:00 bash
 2407  0.0   0 S ?        00:00:00 sshd
 2408  0.0   0 S pts/2    00:00:00 bash
 2437  0.0   0 S pts/2    00:00:00 less
 2846  0.0   0 S pts/1    00:00:00 man
 2856  0.0   0 S pts/1    00:00:00 pager
 2981  0.0   0 R pts/0    00:00:00 ps

或者如果ps xO uname,psr执行则输出为:

  PID USER     PSR S TTY          TIME COMMAND
 1677 manuelj+   1 S ?        00:00:00 systemd
 1679 manuelj+   2 S ?        00:00:00 (sd-pam)
 1704 manuelj+   1 S tty1     00:00:00 bash
 1961 manuelj+   0 S tty4     00:00:00 bash
 1973 manuelj+   1 S tty4     00:00:00 man
 1983 manuelj+   2 S tty4     00:00:00 pager
 2227 manuelj+   3 S ?        00:00:00 sshd
 2228 manuelj+   3 S pts/0    00:00:00 bash
 2307 manuelj+   3 S ?        00:00:01 sshd
 2308 manuelj+   3 S pts/1    00:00:00 bash
 2407 manuelj+   0 S ?        00:00:00 sshd
 2408 manuelj+   0 S pts/2    00:00:00 bash
 2437 manuelj+   0 S pts/2    00:00:00 less
 2846 manuelj+   0 S pts/1    00:00:00 man
 2856 manuelj+   0 S pts/1    00:00:00 pager
 2982 manuelj+   0 R pts/0    00:00:00 ps

您如何看到何时声明至少另一个额外的标头与标头一起添加PSR,然后/仅PSR出现在输出中。

为什么PSR在声明如何通过选项添加唯一的额外标头时,标头没有出现O?这是出于某种原因的预期行为吗?

答案1

我建议不要使用O这样的选项,因为它可能会导致混乱,因为它的行为会根据它获取的字段而变化,而且通常会非常令人困惑。

所以您可能会看到ps xO psr并认为这意味着它应该排序并显示PSR(最后使用的处理器)列?

实际上并没有这样做。

上面的@steeldriver 钉住了它,它正在使用旧密钥进行排序。所以你要求ps排序:pid“p”,大小“s”和RSS“r”。按rsp或排序spr同样有效,当然排序顺序不同。

为什么会改变事情?ps xO psr,%cpu甚至为此ps xO psr,psr改变事情? ps 现在意识到您不需要旧的排序键,并且正在使用列的名称进行排序。

相关内容