私は "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)}'