Performance
ps -p PID
究竟做了什麼而 ps -q PID
沒有呢?
根據
man ps
:-p pidlist Select by PID. This selects the processes whose process ID numbers appear in pidlist. Identical to p and --pid. -q pidlist Select by PID (quick mode). This selects the processes whose process ID numbers appear in pidlist. With this option ps reads the necessary info only for the pids listed in the pidlist and doesn't apply additional filtering rules. The order of pids is unsorted and preserved. No additional selection options, sorting and forest type listings are allowed in this mode. Identical to q and --quick-pid.
我看到這
-q
比 快得多-p
,最多需要四分之一的時間來生成相同的列表。例如:
$ time ps -fq "$$" UID PID PPID C STIME TTY TIME CMD vagrant 8115 3337 0 23:05 pts/0 00:00:00 bash real 0m0.003s user 0m0.001s sys 0m0.002s $ time ps -fp "$$" UID PID PPID C STIME TTY TIME CMD vagrant 8115 3337 0 23:05 pts/0 00:00:00 bash real 0m0.013s user 0m0.003s sys 0m0.009s $
在另一個系統上,我觀察
ps -q
到花費的時間不到ps -p
.但是,我沒有使用森林類型的列表,而且我只傳遞了一個 PID,因此排序不會花費任何時間(對於中等長度的 PID 列表,排序應該可以忽略不計)。我的命令中沒有額外的過濾規則。
什麼都不
ps -p
是ps -q
?
我能準確回答的是:到底什麼
ps -q PID
不做?
- 從給定的程序列表中排序和/或選擇一棵樹。
從添加 -q/q/–quick-pid 選項並添加粗體:
此送出為“ps”命令引入了一個新選項 q/-q/–quick-pid。該選項與 p/-p/–pid 選項執行類似的工作(即選擇在選項後面的逗號分隔列表中列出的 PID),但新選項針對速度進行了優化。如果使用者只需要指定要顯示的 PID 列表並且不需要其他選擇選項、森林類型輸出和排序選項,則建議使用新選項,因為它通過**避免讀取必要的資訊來減少初始處理延遲系統上執行的所有程序,**並通過簡化內部過濾邏輯。
該選項旨在快速。