によると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.
私はこれが最大4分の1の時間内に同じリストを生成する-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
他のシステムでは、時間が10分の1もかかりませんps -p
。
ただし、フォレストタイプのリストを使用せずに単一のPIDのみを渡すため、ソートには時間がかかりません(そして、適度に短いPIDリストの場合、ソートは無視できなければなりません)。私のコマンドには追加のフィルタリングルールはありません。
ps -p
それはすべてだよps -q
ね?
ベストアンサー1
私が正確に答えることができるものは次のとおりです。ps -q PID
してはいけないことは正確に何ですか?
- 与えられたプロセスのリストからツリーをソートおよび/または選択します。
~から-q/q/--quick-pid オプションを追加太字を追加:
このコミットでは、「ps」コマンドに新しいオプションq/-q/--quick-pidが導入されました。このオプションはp / -p / - -pidオプションと同様に機能します(つまり、このオプションの後にカンマで区切られたリストにリストされているPIDを選択します)、新しいオプションは速度に最適化されています。ユーザーが表示するPIDのリストのみを指定する必要があり、他の選択オプション、フォレストタイプの出力、並べ替えオプションが不要な場合は、初期処理の遅延が減るため、新しいオプションをお勧めします。システムで実行されているすべてのプロセスから必要な情報を読み取らないでください。そして、内部フィルタリングロジックを簡素化します。
このオプションは高速に設計されています。