"ps"コマンドのUnixフラグ形式とBSDフラグ形式の意味について混乱しています。

psコマンドが2種類のフラグを使用できることを読みました。

  • Unix形式の場合は、フラグの前にダッシュを付ける必要があります。
  • BSD形式では、フラグの前にダッシュを付けてはいけません。

今、両方の形式に同じフラグを使用できますか?たとえば、次のコマンドは同じことを意味しますか?

ps -x
ps x

それとも、Unix形式には独自のフラグセットがあり、BSD形式にはまったく異なるフラグセットがありますか?

ベストアンサー1

これマンページあなたの質問に答えてください:

さまざまな種類のオプションを自由に混在させることができますが、競合が発生する可能性があります。多くの標準とps実装との互換性のため、ps同じ機能を実行するいくつかの同義語オプションがあります。

ps -auxとは異なりますのでご注意くださいps aux。 POSIXおよびUNIX規格では、ps -aux「x」というユーザーが所有するすべてのプロセスと、この-aオプションが選択したすべてのプロセスを印刷する必要があります。 「x」というユーザーが存在しない場合、このpsはコマンドを解釈してps aux警告を印刷できます。この動作は、古いスクリプトと習慣を変えるのに役立ちます。壊れやすく変更される可能性があるため、依存してはいけません。

表示は異なりますが、組み合わせることができます。普通は一つを選ぶことになりますが、例えばps auxまたは混合するのではなく、すべてのプロセスの詳細を確認してくださいps -ef

唯一のxフラグはBSDフラグなので、ps x同じps -x結果を生成しますが、両方のバリアントで定義されているフラグには機能しません。

これはすべて特定ですprocpsそしてprocps-ng。これは、最初のステップですべての引数が完全に解析されなかった場合に呼び出される「2番目のチャンス」解析ステップの結果です。これはマンページに文書化されていませんが、次のようになりますps xps -xHACKINGソースコードのファイル:

性格がBSD解析を強制しない限り、parser.cはコマンドラインを混在したBSD + SysV + Gnuの混乱に解析しようとします。失敗した場合、BSDの解決が試みられます。 BSDの解析に失敗した場合後ろにSysV解析が試みられ、エラーメッセージは元のSysV解析からのものです。

おすすめ記事