Linuxで実行されているプロセスの名前付きオプション値を取得するには?

Linuxで実行されているプロセスの名前付きオプション値を取得するには?

次のコマンドを実行します。

ps -e -o args | grep destiny | grep UNIX

次の出力が表示されます。

/path/to/destiny -r -m UNIX -t TCP -p 1501

-m印刷パラメータ(またはまたは-t-pの値を取得するには、どのコマンドを使用できますか?私は次の目標を達成したいと思います。

ps -e -o args | grep destiny | grep UNIX | <someCommand> -pこれは印刷する必要があります1501

ps -e -o args | grep destiny | grep UNIX | <someCommand> -mこれは印刷する必要がありますUNIX

ps -e -o args | grep destiny | grep UNIX | <someCommand> -tこれは印刷する必要がありますTCP

-pまたはは-m列を切り替えて、-t数字で列を印刷して選択できないようにすることができます。awk

事実が多いほど、解析が簡単になります。おそらくツールの知識が不足しているかもしれません。

  • オプションがない場合は空の文字列が返されます。
  • この特別な場合、解析されるオプションには常にパラメータ/値があります。

ベストアンサー1

これは、コマンド自体だけが引数を解析する方法を知っているため、通常は不可能です。あなたの例を見てください:

/path/to/destiny -r -m UNIX -t TCP -p 1501

-p引数なしでオプションにすることができます(たとえば、ブール値:一部の動作を有効または無効にするなど)。この場合、1501位置引数(ファイル名など)になります。あるいは、-p引数が . の引数を持つオプションである場合もあります1501。それが何であるかを知る方法はありません!

パラメータベクトルは0個以上の文字列のリストにすぎません。これらの文字列には、オプション、そのオプションの引数、オプションではない引数を表す意味はありません。

あなたの例のオプションでさえ-r一般的に解析することはできません。-rで始まる他の文字列が続くことを考慮すると、-これはパラメータを使用しないオプション(たとえば、一部の動作を有効または無効にするブール値)である可能性が高くなりますが、-r実際には100%はわかりません。-r引数があるオプションであり、-mその引数になります。あるいは、コマンドは一般的なUNIXルールにまったく従わない可能性があり、-r単にオプションではありません!

おすすめ記事