リモートで使用しているコンピュータのemacsプロセス数を数えるには、ps -Afコマンドを使用する必要があります。どこから始めるべきですか?
答え1
ps -Af
最善のアプローチではありません。
このf
オプションは重複しており、emacs以外のプロセスがemacsまたはそれを引数の1つとして含む文字列を使用する場合(可能性が低い)、emacsというユーザーにとってはもちろん、偽の肯定を引き起こす可能性があります。
次の簡単なコマンドを使用することをお勧めします。
pgrep emacs | wc -l
答え2
あなたはできますps -C emacs --no-heading | wc -l
ps -C command
コマンド名によるプロセス出力
編集:ps --help
非常に興味深い
答え3
Hennesが言ったように、ps -AF | grep emacs | wc -l
""を使ってこれを行うことができます。しかし、そこには自分だけの命令もあります。このコマンドを削除するには、 " grep -v
"(または--inverted-match
)を使用して計算したくないコマンドをフィルタリングできます。したがって、次のようになります。ps -AF | grep emacs | grep -v grep | wc -l
答え4
最初の原則から始めてください。
まず、実行するコマンドが正確に何を使用しているか、および指定されたオプション(-Af
)がどのように機能するかを確認してください。これを行うには、次の内容をお読みくださいman ps
。
-A はすべてのプロセスを選択します。
-f は完全な形式のリストを作成します。このオプションは、他の多くのUNIXスタイルオプションと組み合わせて使用して追加の列を追加できます。
したがって、開始点はユーザーのために実行されているすべてのプロセスの出力であり、完全な形式で一覧表示されます。処理を試みる前に、次のコマンドを実行して出力全体を確認してください。
ps -Af
プロセス数を計算するには、emacs
フィルタツールを使用して出力をパイプ処理して処理するか、対応する一致を計算する必要があります。grep
良い選択ですが、効率性とシンプルさのために、以下を使用してくださいawk
。
ps -Af | awk '/emacs/ && !/awk/ { a++ } END { print a }'
これはパターンを検索し/emacs/
、検索自体からパターンを除いて!/awk/
一致するものを追加し{ a++ }
、合計を印刷します{ print a }
。
これはパイプラインのみを必要とし、検索プロセスがカウントを返さないという問題をエレガントに処理します。