web-dev-qa-db-ja.com

Linux / Bash、ps -oを使用して特定の名前でプロセスを取得しますか?

Ps -oコマンドを使用して、特定の名前に一致するプロセスに関する特定の情報のみを取得しようとしています。しかし、私はこれにいくつかの問題があります。すべてのプロセスを取得するためにこれを使用しようとすると、通常のps -efは戻ります(ほとんど同じ数の結果を返さないため、実行中のすべてのプロセスを返しません)

ps -ef -o pid,time,comm

私はこのようなものを試してみたい(下)が、ps -oを組み込み、特定の情報を取得するだけです(PIDのみ)

ps -ef |grep `whoami`| grep firefox-bin

これを適切に行う方法についてのアドバイスはありがたいです、ありがとう

57
Rick

これにより、プロセスのPIDが名前で取得されます。

pidof name

その後、psに再度接続して詳細を確認できます。

ps -p $(pidof name)
94
Alex Howansky

これは少し古いですが、あなたが望むものは次のとおりです:ps -o pid -C PROCESS_NAME、たとえば:

ps -o pid -C bash

編集:期待する出力の種類に応じて、pgrepはよりエレガントになります。私の知る限り、これはLinux固有であり、上記と同様の出力になります。例えば:

pgrep bash
25
h7r
ps -fC PROCESSNAME

psとgrepは危険な組み合わせです。grepは各行のすべてに一致しようとします(したがって、非常に一般的なのはgrep -v grep hack)。 ps -Cはgrepを使用せず、完全一致のためにプロセステーブルを使用します。したがって、次のコマンドで正確なリストを取得できます:ps -fC sh代わりに、shを含むすべてのプロセスを行のどこかに見つけます。

11
Gerald Hughes

プロセスを名前でgrepする必要がある場合があります-その場合:

ps aux | grep simple-scan

出力例:

simple-scan  1090  0.0  0.1   4248  1432 ?        S    Jun11   0:00
4
user3751385

申し訳ありませんが、パーティーにはかなり遅れましたが、検索文字列と同じ名前のプロセスをキャプチャしたい場合は、

pgrep -x PROCESS_NAME

-x          Require an exact match of the process name, or argument list if -f is given.
             The default is to match any substring.

これは、元のプロセスが独自の名前の元のプロセスの名前の前に子プロセス(クエリの場合はゾンビ)を作成し、結果からそれらを除外しようとする場合に非常に便利です。これを行う多くのUNIXデーモンがあります。私の頼りになる例はninja-dev-syncです。

0
Spade