web-dev-qa-db-ja.com

pgrepに完全なプロセス情報を表示させる方法

pgrepを取得して、psが行う各プロセスに関するすべての情報を入手する方法はありますか? psからgrepまでをパイプ処理できることはわかっていますが、これは多くの入力が必要で、grepプロセス自体も不要です。

27
JoelFan

pgrepの出力オプションはかなり制限されています。重要な情報を入手するには、ほぼ間違いなくpsを介して送り返す必要があります。 ~/.bashrcでbash関数を使用して、これを自動化できます。

function ppgrep() { pgrep "$@" | xargs --no-run-if-empty ps fp; }

次に、コマンドを呼び出します。

ppgrep <pattern>
22
Dan Carley

pgreppsを使用してxargsを結合します!

pgrep <your pgrep-criteria> | xargs ps <your ps options> -p

たとえば試してみてください

pgrep -u user | xargs ps -f -p

userの完全なプロセスリストを取得します。オプション-u userpgrepオプションを_ [数値または名前として)指定されたユーザーに制限し、psオプション-f -p選択したPIDの完全な形式のリストを要求します。

最初の行を列名のままにしておくのは良いことです。 grepは常に列名を削除します。

16
nalply

以下は、PID +完全なコマンドラインのみを提供します。 「psが行うすべての情報」については、他の回答を参照してください...

ほとんどのLinuxは procps-ng を使用します。 3.3.4(2012年にリリース)以降、pgrep -a--list-full)は完全なコマンドラインを表示します。
注:デフォルトでは、pgrepは実行可能ファイル名に対して指定したパターンにのみ一致します。 (grepping psと同じように)コマンドライン全体と照合する場合は、-f--full)オプションを追加します。

古いバージョン(元の procps プロジェクトを含む)では、-lオプションは情報を表示しましたが、動作はさまざまです:

  • pgrep -flは、完全なコマンドラインに対してパターンを照合し、完全なコマンドラインを示しました。
  • pgrep -lのみが実行可能ファイル名のみに一致し、実行可能ファイル名のみが表示されました。
    完全に一致させたくない場合、完全なコマンドラインを表示できませんでした: [---(https://bugs.debian.org/cgi-bin/bugreport.cgi?bug = 526355#15 ]

* BSDが使用するコードはわかりませんが、それらの man page は古い-flの動作を文書化しています。

残念ながら、移植性のある-flを使用することもできません。最近のprocps-ngでは、-f--list-name)は常に実行可能ファイル名のみを出力します。

Linux

GNU pgrepのバージョン]の場合、-i(大文字と小文字の区別なし)はサポートされず、長い+ファジー出力は-afで実現されます。

$ pgrep -af Apache

OUTPUT:
    1748 /usr/sbin/Apache2 -k start

マニュアルページ

   -a, --list-full
       List  the  full  command line as well as the process ID.  (pgrep only.)

   -f, --full
       The pattern is normally only matched against the process name.  
       When -f is set, the full command  line is used.

マックOS

OSX(およびBSDでは推論)では、-llong output)を-fと組み合わせて完全一致引数リスト)は完全なコマンドを表示します(-iは大文字と小文字を区別しません):

$ pgrep -fil ssh

OUTPUT:
    33770 ssh: [email protected] [mux] t

man page

 -l          Long output.  For pgrep, print the
             process name in addition to the
             process ID for each matching
             process.  If used in conjunction
             with -f, print the process ID and
             the full argument list for each
             matching process.  For pkill, dis-
             play the kill command used for
             each process killed.
5
ccpizza

-vオプションを使用してgrepを実行します-要求されたパターンをすべて返します。

ps -ef | grep <process> | grep -v grep
2
baumgart

Pgrepに-lオプションを使用することで取得できるほとんどの情報は、名前とプロセスIDです。

psはあらゆる種類のフォーマットオプションをサポートしているので、入力内容を保存するためのエイリアスを作成するだけです。 grepプロセスを出力から除外する簡単な方法は、grep -v grepへの追加のパイプを含めて、grepプロセスを除外することです。

0
Kyle Brandt

grepプロセスを排除するために、パターンの一部としてブラケットを使用できます。

ps -ef | grep '[t]ty'

これは、psおよびpgrepを使用して実行できます。

ps -fp $(pgrep -d, tty)