Ps

ps 命令:帶有“O”選項的奇怪行為,額外的列/標題未按預期顯示

  • May 10, 2022

關於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 

出現,我們知道預設的列/標題集。

如何簡單的確認 - 如果ps 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?這是出於某種原因的預期行為嗎?

我建議不要使用這樣的O選項,因為它可能會導致混淆,因為它的行為會根據它獲得的欄位而變化,而且通常會非常令人困惑。

所以你可能看到ps xO psr並認為這意味著它應該排序並顯示PSR(最後使用的處理器)列?

它實際上並沒有這樣做。

上面的@steeldriver 確定了它,它使用舊鍵進行排序。所以你要求ps排序:pid“p”,大小“s”和RSS“r”。按rspor排序spr同樣有效,當然有不同的排序順序。

為什麼ps xO psr,%cpu或什至會ps xO psr,psr改變事情?ps 現在意識到您不想要舊的排序鍵並且正在使用列的名稱進行排序。

引用自:https://unix.stackexchange.com/questions/701713