「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)}'

答え2

スクリプトの目的では、不快な出力を/proc/loadavg解析するために負荷平均を取得する方が簡単です。uptime

はい

$ cat /proc/loadavg
1.08 0.77 0.85 2/838 16771

からman proc

   /proc/loadavg
        The first three fields in this file are load average figures 
        giving the number of jobs in the run queue (state R) or waiting for 
        disk I/O (state D) averaged  over  1, 5, and 15 minutes.  They are 
        the same as the load average numbers given by uptime(1) and other 
        programs.  The fourth field consists of two numbers separated by a 
        slash (/).  The first of these is the number of currently runnable 
        kernel scheduling entities  (processes,  threads).   

        The  value after  the slash is the number of kernel scheduling 
        entities that currently exist on the system.  The fifth field is 
        the PID of the process that was most recently created on the system.

関連情報