Ps
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
出現,我們知道預設的列/標題集。
如何簡單的確認 - 如果
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”。按rsp
or排序spr
同樣有效,當然有不同的排序順序。為什麼
ps xO psr,%cpu
或什至會ps xO psr,psr
改變事情?ps 現在意識到您不想要舊的排序鍵並且正在使用列的名稱進行排序。