web-dev-qa-db-ja.com

あるコマンドの出力を別のコマンドの出力で割る方法は?

どのサーバーが過負荷であるかを判断するために、サーバーの負荷をCPUコアの量で割った値を知りたいのですが。次の方法でCPUコアの量を取得できます。

$ grep -c processor /proc/cpuinfo
2

次の方法でサーバーの負荷をかけることができます。

$ uptime | awk '{print $11}'
0.47,

ここで、0.47/2を分割して0.23を取得したいと思います。 これを行うためにどのマンページを読むべきかをどうやって知ることができますか?正しいコマンドを見つけるための次のステップが何であるかを学ぶ方法を本当に探しています。コマンド自体を求めているのではありません。

オンラインで質問を検索してみましたが、Googleでさえ正しい方向に導くことができませんでした。したがって、代わりに、どのキーワードを検索する必要がありますか?明らかな「linux、division、bash、output」は役に立ちませんでした。

4
dotancohen

これでうまくいくはずです:

(awk '{printf "%s/", $2}' /proc/loadavg; grep -c processor /proc/cpuinfo;) | bc -l

また、コマンドuptimeも取得する/proc/loadavgから負荷を取得する必要があります。

5
chaos

Bashスクリプトを実行するだけです。 2つの異なる変数に両方の値を取得します。次に、コマンドbcを使用して、一方を他方から分割します。それと同じくらい簡単です。

2
Tingrammer

Kshとzshには浮動小数点演算があります。 bashを含む他のシェルには、整数演算のみがあります(32ビットまたは64ビットに制限されています)。

すべてのShellのmanページには、算術に関するセクションがあります。浮動小数点計算が必要な場合は、見つけるのが難しくなります。マニュアルページを検索する主な方法は apropos コマンドで、ページの1行の説明を検索します。シェルから何かを使用したいので、 section 1が必要です。apropos -s 1 float私のLinuxマシンには何も関係ありません。最終的に機能するのは

$ apropos -s 1 calculator
bc (1)               - An arbitrary precision calculator language
dc (1)               - an arbitrary precision calculator

Webには、提供できるリソースがたくさんあります。 http://www.google.com/search?q=bash+float の最初のページで、 bashまたは他の言語で整数と浮動小数点の計算を行う方法/フレームワーク? そして今あなたの質問(そしてまたいくつかの スタックオーバーフロー スレッド)。 http://www.google.com/search?q=bash+division いくつかのSOスレッド、2番目のスレッドは どうすればよいですか? bashでfloat除算を取得しますか?nix Stack Exchange で検索することもできます。これには、 bashcalculator というタグが付いた質問があります。 floating-pointbashまたは他の言語/フレームワークで整数と浮動小数点の計算を行う方法は?

浮動小数点または大きな整数の計算の一般的な選択は bc です。これは、 標準化 されている古典的なUnixユーティリティです。

浮動小数点計算を実行でき、おそらくbcの精度ベースのモデルよりも使い始めるのが簡単なもう1つの標準ユーティリティは、 awk です。 awkは主にテキスト処理用に設計されていますが、浮動小数点計算も実行できます。

_decimal_places=2
dc  <<< "${decimal_places}k $(uptime | awk '{print $11}'|  cut -d"," -f1) $(grep -c processor /proc/cpuinfo) /p"
_

この回答では、bashで$()を使用しているため、一時変数は必要ありません。また、電卓であるdcも使用します。 kを使用してdcに精度を伝え、2つの数値を与えてから、それらを除算して答えを出力するように依頼します。

1
ctrl-alt-delor