
ps
とにリストされているプロセスの違いは何ですかps -A
?
答え1
がない場合-A
、ps は現在のセッションに属するプロセスのみを出力します。これは「絶対にすべて」のようなものだと考えてください。関連して、-a
同じことを行いますが、セッション所有者 (ユーザー名) に制限します。
答え2
GNUps
コマンドは、重度の多重人格障害に悩まされています。そのため、マニュアルページがわかりにくいのも不思議ではありません。BSDのマニュアルを見ると、理解しやすくなるかもしれません。結局のところ、この質問ははタグ付きユニックス。
BSD の操作は、ps
次の 2 つの点を念頭に置くと非常に簡単です。
- プロセスは2つの基本的なフィルターを使用して表示用に選択されます。これらのフィルターはの上デフォルトでは、コマンドラインオプションでオフ飾り気のないシンプルなものは、
ps
このように両方を通してフィルタリングされます。 - BSD 構文は古くから存在しています。現代の BSD では
getopt
、マイナス記号を前に付けるオプションの慣例が採用されていますが、ここで関連するオプションと動作は 30 年前とほとんど変わりません。
その動作は次のとおりです。
-a
(歴史的にa
)選択肢オフにするすべての「セレクター」フィルタリング。- その他のさまざまなコマンドライン オプションはセレクタを指定します。UID
-U
による選択、-t
制御端末名による選択、-p
プロセス ID による選択などです。これらはすべて によってバイパスされます-a
。 - セレクタが明示的に指定されていない場合は、デフォルトセレクターは、を呼び出したユーザーと同じ実効 UID で実行されているプロセスのみを表示します
ps
。このデフォルトのセレクターは、このオプションによってオフになる履歴フィルターです。
- その他のさまざまなコマンドライン オプションはセレクタを指定します。UID
-x
(歴史的にx
)選択肢オフにするps
制御端末を持つプロセスのみを表示するという制限。
歴史的に、BSD にはオプションps
はありませんでしたA
。しかし、最近の BSD では、(後の) Single UNIX 仕様との (ある程度の) 互換性のために、 -A
としても使用できるオプションが実装されています。 は、と の両方を使用するのと同じです。つまり、両方の制限をオフにして、すべてのプロセスをフィルタリングせずに 1 つにします。A
-A
-a
-x
OpenBSD と NetBSD では、この-A
オプションが文書化されており、NetBSD の場合は として明示的に記述さ-a -x
れています。FreeBSD では記述されていませんが、ソース コード内のコメントには、意図的に文書化されていない SUSv5 互換性オプションとして記述されていることが記載されています。