`ps -p PID`は、 `ps -q PID`が実行しない正確に何をしますか?

`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.

私はこれが最大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のリストのみを指定する必要があり、他の選択オプション、フォレストタイプの出力、並べ替えオプションが不要な場合は、初期処理の遅延が減るため、新しいオプションをお勧めします。システムで実行されているすべてのプロセスから必要な情報を読み取らないでください。そして、内部フィルタリングロジックを簡素化します。

このオプションは高速に設計されています。

おすすめ記事