wcとpsを使用して実行中のプロセス数を計算する

wcとpsを使用して実行中のプロセス数を計算する

試してみましたがps r > log | wc log返されますAmbiguous output redirect.。誰かが理由を説明し、他のソリューションを提供できますか?

答え1

パイプ記号("|")は、あるプログラムの出力を別のプログラムの入力にリダイレクトします。

wcただし、出力をSTDIN wc(入力ファイルに提供するときは使用されません)にリダイレクトしたいときは、「>」を使用して出力をlogというファイルにリダイレクトできますwc

したがって、次のいずれかが必要です。 (ヒント:追加のファイルを生成しないので、後者の解決策が良いです。)

ps r > log ; wc log

または

ps r|wc

wc注:おそらく行数を計算したいので、wc -lこの場合は次のようになります。

答え2

リダイレクトとパイプを混ぜています。

ps r > log # redirects ps output to a file called log (over writing any contents of log)

あなたが望むもの

ps r | wc # this connects the output of ps to the input of wc

あなたの方法を使用するには、次のことを行う必要があります

ps r > log; wc log

つまり、ps出力をlogというファイルにリダイレクトし、そのwcファイルからコマンドを実行しますlog

答え3

これを使用するpsことは信頼できません。プロセスの引数には改行文字を含めることができます。 Linuxでより良い代替手段は、/proc/loadavg次のように使用することです。

awk '{ gsub("[0-9]+/", "") ; print $4 }' /proc/loadavg

関連情報