
試してみましたが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