web-dev-qa-db-ja.com

Linuxでコマンドラインを使用してプロセス数を見つける

Linuxでコマンドラインを使用して、同じ名前の実行中のプロセスの数を見つける最良の方法を探していました。たとえば、実行中のbashプロセスの数を調べて「5」を取得したい場合。現在、「pidof」を実行し、トークン化された文字列をカウントするスクリプトがあります。これは正常に機能しますが、コマンドラインを介して完全に実行できるより良い方法があるかどうか疑問に思っていました。よろしくお願いします。

23
Traker

pgrepが使用可能なシステムでは、-cオプションは、指定された名前に一致するプロセスの数のカウントを返します

pgrep -c command_name

これはgrepスタイルの一致であり、完全一致ではないことに注意してください。 pgrep shは、bashプロセスとも一致します。完全一致が必要な場合は、-xオプションも使用します。

pgrepが使用できない場合は、psおよびwcを使用できます。

ps -C command_name --no-headers | wc -l

ps-Cオプションはcommand_nameを引数として取り、プログラムは実行可能ファイル名が指定されたコマンド名と一致するプロセスに関する情報のテーブルを出力します。これは、grep- styleではなく、完全一致です。 --no-headersオプションは、通常は最初の行として出力されるテーブルのヘッダーを抑制します。 --no-headersを使用すると、一致するプロセスごとに1行が取得されます。次に、wc -lは入力の行数をカウントして出力します。

53
David Z
result=`ps -Al | grep command-name | wc -l`
echo $result
11
Amardeep AC9MF
ps -Al | grep -c bash
7
Alex B

試してみてください:

ps -ef | grep -cw [p] rocess_name

OR

ps aux | grep -cw [p] rocess_name

例:=

ps -ef | grep -cw [i] nit

5

上記のいくつかは私には役に立たなかったが、それらはこれに向かう途中で私を助けた。

ps aux | grep [j]ava -c

Linuxの初心者向け:

ps auxは現在実行中のすべてのプロセスを出力し、grepはWordに一致するすべてのプロセスを検索しますJava[]ブラケットは実行したプロセスを削除するので、実行中のプロセスとして含まれず、最後に-cオプションはcountを表します。

3
Niall O Shea

すべてのプロセス名をリストし、ソートしてカウントする

ps --no-headers -A -o comm | sort | uniq -c

Ttyに接続されたプロセスをリストすることもできます

ps --no-headers a -o comm | sort | uniq -c

次を使用してフィルタリングできます。

ps --no-headers -A -o comm | awk '{ list[$1] ++ } END { for (i in list) { if (list[i] > 10) printf ("%20s: %s\n", i, list[i]) } }'
2
fraff

次のbashスクリプトはcronジョブとして実行できます。プロセスがフォークしすぎると、電子メールを受け取る可能性があります。

for i in `ps -A -o comm= --sort=+comm | uniq`; 
do 
    if (( `ps -C $i --no-headers | wc -l` > 10 )); then 
        echo `hostname` $i `ps -C $i --no-headers | wc -l` ;
    fi
done

10を懸念の数に置き換えます。

TODO:「10」もコマンドラインパラメータとして渡すことができます。また、例外リストに入れることができるシステムプロセスはほとんどありません。

1
Sury Soni

ps aux | wc -l

このコマンドは、すべてのユーザーがシステムで実行しているプロセスの数を表示します。

特定のユーザーに対して、次のコマンドを使用できます。

ps -u <username> | wc -l

実行する前に実際のユーザー名に置き換えてください:)

0
spoorthi vaidya

ps(プロセスのスナップショットを表示します)をwc(単語の数をカウントします、wc -lオプションは行、つまり改行文字をカウントします)を使用できます。これは非常に簡単で覚えやすいものです。

ps -e | grep processName | wc -l

この単純なコマンドは、現在のサーバーで実行されているプロセスの数を出力します。現在のユーザーで現在のサーバーで実行されているプロセスの数を確認する場合は、ps-Uオプションを使用します。

ps -U root | grep processName | wc -l

ユーザー名でルートを変更します。

しかし、他の多くの回答で述べたように、ps -e | grep -c process_nameを使用することもできます。これはよりエレガントな方法です。

0
BreakBadSP