Linux / コマンド / uptime - システム稼働時間と負荷の確認
uptimeは、現在の時刻、システムが最後に起動してから実行された時間、ログインユーザー数、直近1分・5分・15分の平均負荷を一行で表示するコマンドです。サーバーがいつ再起動されたかを素早く確認したり、負荷が一時的なものか継続的なものかを判断する際の出発点として使用されます。
uptime
ただし平均負荷はCPU使用率と同じ値ではありません。実行可能な状態または割り込み不能なI/O待機状態にある作業の平均的な数を示すため、CPUの数やディスク・ネットワークの状態も合わせて確認することで正確に解釈できます。
uptime出力項目の読み方
一般的な出力形式は次の通りです。実際の時刻や数字はシステムごとに異なります。
14:32:10 up 12 days, 3:41, 2 users, load average: 0.42, 0.51, 0.48
procps-ng uptime公式マニュアルは、この一行が現在時刻、稼働時間、ログインユーザー数、1分・5分・15分平均負荷で構成されると説明しています。
| 出力例 | 意味 | 解釈する際の注意点 |
|---|---|---|
14:32:10 |
システムの現在時刻 | タイムゾーンと時刻同期設定の影響を受けます。 |
up 12 days, 3:41 |
最後の起動後の経過時間 | コンテナではホストの稼働時間が表示される場合があります。 |
2 users |
ログインセッション数 | 固有の人数ではなく、現在のログイン記録に基づいて数えます。 |
0.42, 0.51, 0.48 |
1分・5分・15分の平均負荷 | 論理CPU数で正規化された割合ではありません。 |
各項目を詳しく読む
現在の時刻
先頭の値はシステムが認識している現在の時刻です。ログの時刻と一致しない場合は、 timedatectl でタイムゾーンと同期状態を確認してください。
timedatectl status
システム稼働時間
up の後には最後の起動からの経過時間が表示されます。予想より短い場合は、計画外の再起動、カーネルエラー、電源の問題、または管理作業があったかどうかをシステムログと起動記録で確認してください。
uptime -p
uptime -s
-p は読みやすい経過時間を、-s はシステムが起動した時刻を表示します。使用しているディストリビューションにインストールされている procps-ng のバージョンによりサポートオプションが異なる場合があるため、uptime --help で確認してください。
ログインユーザー数
ユーザー数は現在ログインしているセッションを基に計算されます。同一ユーザーが SSH やコンソールに複数回ログインすると、複数のセッションとして集計されることがあります。誰が接続しているかを確認するには、w または who を使用してください。
w
who
Load average とは何ですか?
三つの数字の時間範囲
平均負荷(load average)の三つの値は、それぞれ直近の1分、5分、15分間の負荷を示します。単純な算術平均ではなく、直近の状態により大きな重みを置く指数移動平均であるため、特定の時点の作業数をそのまま表示する値ではありません。
- 1分の値が5分・15分の値より大きい場合、最近の負荷が増加している傾向かもしれません。
- 1分の値が小さい場合、以前の高負荷が緩和されている傾向かもしれません。
- 三つの値がすべて同じくらい高ければ、負荷が持続している可能性があります。
CPU数と比較する
平均負荷はCPU数で正規化されていません。まず利用可能な処理単位の数を確認してから負荷と比較してください。nprocは現在のプロセスが利用できると判断される数を返すため、物理的に搭載されたCPU全体の数とは異なる場合があります。
nproc
例えば論理CPUが4つのシステムで負荷が1.00であれば、CPU1つのシステムの1.00とは意味が異なります。単純な経験則として、負荷が論理CPU数に近い場合は実行可能な作業がCPU容量のかなりの部分を使用している可能性がありますが、これだけでボトルネックを確定することはできません。
CPU使用率と異なる理由
Linuxの平均負荷には、CPUで実行中または実行を待っている作業だけでなく、割り込み不能な状態でI/Oを待っている作業も含まれます。したがって、CPU使用率が低くても、遅いディスクやネットワークストレージのために平均負荷が高くなることがあります。
負荷が高い場合は、CPU使用率、実行キュー、I/O待ち、メモリとスワップを一緒に確認する必要があります。
top
vmstat 1
iostat -xz 1
free -h
iostatは通常sysstatパッケージに含まれており、インストールされていない場合があります。
よく使うuptimeオプション
読みやすい稼働時間表示
uptime --pretty
-pまたは--prettyは稼働時間のみを人が読みやすい文章で出力します。スクリプトで言語に影響される文章を解析する目的には適していません。
起動時刻の確認
uptime --since
-s または --since は、システムが起動した時刻を YYYY-MM-DD HH:MM:SS 形式で表示します。現在時刻を基準に計算した値なので、時間設定が大きく変更されたシステムでは、ログの起動記録と合わせて確認してください。
コンテナと生の形式オプション
最新の procps-ng には、コンテナ稼働時間を要求する --container と、現在時刻・稼働時間を秒単位で表示する --raw オプションがあります。
uptime --container
uptime --raw
このオプションは、古いディストリビューションの procps-ng にはない場合があります。コンテナランタイムとカーネルが関連情報を提供しなければ期待した値が出ないこともあるため、実際の環境でサポートされているか確認する必要があります。
平均負荷が高いときに確認する順序
トレンドと CPU 数から確認する
uptimeの 1分・5分・15分値で増減・持続の有無を見ます。nprocで論理 CPU 数を確認します。topやpsでCPUを多く使用するプロセスを探します。vmstatとiostatで実行キューとI/O待ちを確認します。freeで利用可能なメモリとスワップ使用量を確認します。
一度の数値で障害を断定しない
短時間の圧縮作業やバックアップのために1分の負荷が一時的に高くなるのは正常な場合があります。逆に15分値まで継続的に上昇し、応答時間が悪化するなら継続的なボトルネックである可能性が高いです。基準値はCPU数だけでなく、普段のトラフィック、作業種類、ストレージ性能、サービス遅延時間に合わせて設定する必要があります。
定期的な観察が必要な場合は、一時的なuptime出力よりも、モニタリングシステムで平均負荷、CPU、I/O、メモリ、アプリケーション指標をまとめて収集する方が良いです。
コンテナと仮想マシンで注意すべき点
仮想マシンのuptimeは通常、該当するゲストOSの稼働時間を示します。コンテナはホストカーネルを共有するため、ツールや環境によってはホストの稼働時間が表示されることがあります。最新のprocps-ngでの--container対応状況、コンテナランタイムの名前空間設定、モニタリングシステムのデータソースを併せて確認してください。
また、コンテナに割り当てられたCPU制限とnprocが報告する値が必ずしも管理者の期待する容量と一致するとは限りません。コンテナオーケストレーターのCPUリクエスト・制限やスロットリング指標も併せて確認することが安全です。
よくある質問
load averageが1.00ならCPU使用率100%ですか?
いいえ。平均負荷は実行可能状態や中断不能なI/O待機状態のジョブ数を反映しており、CPU数で正規化されるわけではありません。CPU使用率はtopやmpstatなどのツールで別途確認する必要があります。
稼働時間が突然短くなった理由は何ですか?
ほとんどの場合、システムが再起動されたためです。予定されたアップデートだったか、電源問題やカーネルエラーがあったか、journalctl --list-boots、システムログ、運用記録を確認してください。ログ保持の設定によっては以前の起動記録が存在しない場合もあります。
ログインユーザー数が実際の人数と異なる理由は何ですか?
一人が複数のSSHやコンソールセッションを開くと、それぞれ集計されることがあり、古いログイン記録が残る場合もあります。wやwhoで端末とログイン時刻を確認してください。
uptimeを継続的に確認するにはどうすればよいですか?
watchを使って、一定間隔で実行できます。
watch -n 5 uptime
長期間の傾向や通知が必要な場合は、出力画面を見守るのではなく、監視システムを使用してください。
まとめ
uptimeは再起動の有無や負荷の傾向を素早く確認する第一歩です。出力の3つの平均負荷は1分・5分・15分の区間を示しており、CPU使用率やパーセンテージではありません。
平均負荷が高い場合は、論理CPU数、CPU使用率、実行キュー、I/O待機、使用可能なメモリとスワップを一緒に確認してください。メモリ項目の解釈方法はfreeコマンドの使い方で続けて確認できます。




