「uptime」コマンドは「平均」を返します。

「uptime」コマンドは「平均」を返します。

私は "uptime"を使って5分ごとにロード平均をチェックし、結果をテキストファイルに書き込む単純なbashスクリプトを書いた。 1つを除いて、すべてが大丈夫です。毎日12:00から13:00まで、通常の整数値の代わりに「平均」というテキスト値が表示されます。

「uptime」コマンドの「平均」結果をどのように解釈する必要がありますか?コマンドラインで "uptime"を実行すると、すべてがうまく機能します。一般的な整数値が表示されます。

ソースコードは次のとおりです。

#!/bin/bash

sCurrentUptime="$(uptime | awk '{print $10}')"
iLength="${#sCurrentUptime}"
sUptime="${sCurrentUptime:0:iLength-1}"
iUptime=${sUptime/.*}
now="$(date)"
echo $now';'$iUptime

出力は次のとおりです(最後の列には負荷平均が含まれています)。

Thu Apr 17 08:40:01 MSK 2014;0
Thu Apr 17 09:00:01 MSK 2014;2
Thu Apr 17 09:20:02 MSK 2014;3
Thu Apr 17 09:40:02 MSK 2014;3
Thu Apr 17 10:00:01 MSK 2014;2
Thu Apr 17 10:20:01 MSK 2014;3
Thu Apr 17 10:40:01 MSK 2014;1
Thu Apr 17 11:00:02 MSK 2014;2
Thu Apr 17 11:20:01 MSK 2014;3
Thu Apr 17 11:40:01 MSK 2014;2
Thu Apr 17 12:00:02 MSK 2014;3
Thu Apr 17 12:20:02 MSK 2014;average
Thu Apr 17 12:40:01 MSK 2014;average
Thu Apr 17 13:00:01 MSK 2014;average
Thu Apr 17 13:20:01 MSK 2014;3
Thu Apr 17 13:40:01 MSK 2014;1
Thu Apr 17 14:00:01 MSK 2014;2
Thu Apr 17 14:20:01 MSK 2014;3
Thu Apr 17 14:40:01 MSK 2014;2
Thu Apr 17 15:00:01 MSK 2014;2
Thu Apr 17 15:20:01 MSK 2014;3
Thu Apr 17 15:40:01 MSK 2014;1

ベストアンサー1

稼働時間の出力は、稼働時間自体によって異なります。

システムへ

$ uptime
17:35pm  up 5 days  9:24,  9 users,  load average: 0.30, 0.28, 0.28

したがって、12のフィールドがあります。

他のシステムでは

uptime
17:36:15 up  8:44,  2 users,  load average: 0.09, 0.30, 0.41

だから10のフィールドがあります。もちろん、システムによっては遅れることがあります。私はあなたが正午にコンピュータの電源を入れたと仮定します。その結果、稼働時間はN日0時間になり、これは表示されません(または同様のもの)。

とにかく最後の列が欲しいので、awkコマンドを次のように置き換えることができます。

uptime | awk '{print $NF}'

NFフィールド数なので、$NF行の最後のフィールドです。これはエラー防止に適していると思います。

最初の負荷平均が必要ですが、3番目の負荷平均が望ましくない場合は、次のことができます。

uptime | awk '{print $(NF-2)}'

おすすめ記事