GNU/Linux >> Linux の 問題 >  >> Linux

完全なプロセス情報を表示するようにpgrepを取得する方法

解決策 1:

pgrep の出力オプションはかなり制限されています。ほとんどの場合、ps 経由で返送する必要があります。 重要な情報を引き出すために。 ~/.bashrc で bash 関数を使用してこれを自動化できます .

function ppgrep() { pgrep "[email protected]" | xargs --no-run-if-empty ps fp; }

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

ppgrep <pattern>

解決策 2:

pgrep を組み合わせる psxargs を使用 !

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

たとえば、

pgrep -u user | xargs ps -f -p

user の完全なプロセス リストを取得するには .オプション -u user 制限 pgrep ps の間に (番号または名前として) 指定されたユーザーに オプション -f -p 選択した PID の完全な形式のリストを要求します。

最初の行に列名を残しておくと便利です。 grep 常に列名を削除します。

解決策 3:

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

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

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

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

*BSD が使用するコードは不明ですが、man ページには古い -fl が記載されています

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

解決策 4:

Linux

pgrep の GNU バージョンの場合 long + fuzzy 出力は -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.

MacOS

OSX の場合 (および推測によると BSD の場合) -l (長い出力 ) -f と組み合わせて (完全な引数リストとの照合 ) は完全なコマンド (-i) を表示します。 大文字と小文字を区別しません):

$ pgrep -fil ssh

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

マニュアルページ:

 -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:

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

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

Linux
  1. プログラムで別のプロセスの親 pid を取得しますか?

  2. CHILD PROCESSから戻り値を取得するには?

  3. ファイルのフルパスを取得するには?

  1. 親プロセスから子プロセスを取得する方法

  2. Linuxでプロセス名を指定してプロセスIDのみを取得するには?

  3. Xによって割り当てられたディスプレイ番号を取得する方法

  1. バックグラウンドプロセスのプロセスIDを取得するには?

  2. VMware ゲストの CPU 情報を取得する方法

  3. 現在のsvnリポジトリのURLを取得するには?