解決策 1:
pgrep
の出力オプションはかなり制限されています。ほとんどの場合、ps
経由で返送する必要があります。 重要な情報を引き出すために。 ~/.bashrc
で bash 関数を使用してこれを自動化できます .
function ppgrep() { pgrep "[email protected]" | xargs --no-run-if-empty ps fp; }
次に、コマンドを呼び出します。
ppgrep <pattern>
解決策 2:
pgrep
を組み合わせる ps
で xargs
を使用 !
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