Ps -oコマンドを使用して、特定の名前に一致するプロセスに関する特定の情報のみを取得しようとしています。しかし、私はこれにいくつかの問題があります。すべてのプロセスを取得するためにこれを使用しようとすると、通常のps -ef
は戻ります(ほとんど同じ数の結果を返さないため、実行中のすべてのプロセスを返しません)
ps -ef -o pid,time,comm
私はこのようなものを試してみたい(下)が、ps -oを組み込み、特定の情報を取得するだけです(PIDのみ)
ps -ef |grep `whoami`| grep firefox-bin
これを適切に行う方法についてのアドバイスはありがたいです、ありがとう
これにより、プロセスのPIDが名前で取得されます。
pidof name
その後、psに再度接続して詳細を確認できます。
ps -p $(pidof name)
これは少し古いですが、あなたが望むものは次のとおりです:ps -o pid -C PROCESS_NAME、たとえば:
ps -o pid -C bash
編集:期待する出力の種類に応じて、pgrep
はよりエレガントになります。私の知る限り、これはLinux固有であり、上記と同様の出力になります。例えば:
pgrep bash
ps -fC PROCESSNAME
psとgrepは危険な組み合わせです。grepは各行のすべてに一致しようとします(したがって、非常に一般的なのはgrep -v grep hack)。 ps -Cはgrepを使用せず、完全一致のためにプロセステーブルを使用します。したがって、次のコマンドで正確なリストを取得できます:ps -fC sh代わりに、shを含むすべてのプロセスを行のどこかに見つけます。
プロセスを名前でgrepする必要がある場合があります-その場合:
ps aux | grep simple-scan
出力例:
simple-scan 1090 0.0 0.1 4248 1432 ? S Jun11 0:00
申し訳ありませんが、パーティーにはかなり遅れましたが、検索文字列と同じ名前のプロセスをキャプチャしたい場合は、
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です。