作成開始 : 平成22年09月30日(木) 最終更新 : 平成28年10月28日(金)

Windowsで稼動時間 (uptime) を取得する。


当サイトへお便りをよせていただいた方から、サイトトップに貼ってある「システムの稼動時間」を表示するのはどのようにすればよいかとの質問がありました。
当サイトは FreeBSD を使っているので uptime で取得した時間を Perl で成形して表示しているのです。
お便りいただいた方は「自宅サーバー」に興味をお持ちで、サイト構築とホームページ作成はじめているとのことでした。
ただ、OSは WindowsXP ということでした。
FreeBSDやLinuxなどのUnix系はuptimeが標準で使えますが、Windowsにはこのコマンドがありません。

Windows で システムの稼動時間を表示する方法をずーっと前に探したことがあるのですが、結局見つからず挫折していたのでした。
あれからかなり時間が経っているのでまた調べてみることにしました。

今度は見つかったのです。


1.コマンドの取得

Windows NT 4. 0 SP4 以上の見積もりサーバーの可用性を Uptime.exe ツールを許可します。
 ↑
なんか変な日本語ですが、機械翻訳のようです。
ここから、uptime.exe をダウンロードします。
そして、C:\Windows へ保存します。
対象OSは・・・・ ・・・とのことですが、検索すると他のOS(XP, Vista, 7, Server2003, 2008 )でもいけているようでした。

2.実行確認

コマンドプロンプトから確認します。

uptime /help で使い方を表示してくれます。かなり細かい使い方ができるようですね。
単に uptime とすると・・・・

 ↑
コマンドレベルではこれでいいのですが、これをサイトのページに貼り付けるには、スクリプトを作成する必要がありますね。

3.稼動時間表示スクリプトの作成と実行

Windowsサーバーの稼働時間 ・・・からいただきました。
以下のは PHPスクリプトです。JavascriptやPerl, VBA などで作成してもよいでしょう。
もう少し気の利いた作り方あると思いますが、そこは自己解決してください。

 ↑
これをコピペして例えば uptime.php とかの名前で保存しサイトへ置きます。

注. shell_exec は safe モードでは使えないようです。
実行すると以下のようになります。
・・・・あとはこれをサイトのページに iframe とかで貼り付けるとよいでしょう。

 ↑
おぉ、できましたあー

平成22年10月02日(土) 追記

uptime.exe を使った前記までの方法だとサーバーにある程度の負荷がかかります。
ですが、それよりも軽く動作する方法が見つかりました。
Realtime Server Uptime for Windows - PHP ・・・にありました。「net statistics server コマンド」を使う方法です。

 ↑
これで取得した「統計情報の開始日時」を基点として稼動時間を表示する PHPスクリプトです。


これをコピペして例えば uptime_1.php とかの名前で保存しサイトへ置きます。
実行すると以下のようになります。

 ↑
時間はリアルタイムで表示します。カウントアップします。
同様にサイトのページへ貼り付けてみましょう。

 ↑
うん、いい感じです。

平成24年10月12日(金) 追記

Webサーバーが IIS の時は以下の "Unable to execute" を出してうまく実行してくれません。
これは、Windows の cmd.exe に対して IUSER_ホスト名 アカウントが実行権を持っていないためです。

Windows\system32\cmd.exe のプロパティでセキュリティタグを開き、IUSER_ホスト名 アカウントを読み取り/実行可で追加すればOKになります。

平成28年10月28日(金) 追記

たまたま、Windows Server 2008 SP1 + IIS で uptime をトップページに表示する必要があったので、「net statistics server コマンド」を記述したPHPを使ってみたら、稼働時間がやたらと多いという現象に遭遇しました。
そこで、コマンドプロンプトで「net statistics server コマンド」を実行しました。

  ↑
なんと、起動した直後なのに統計情報の開始日付が「1980/12/18 14:32:51」になっています。
「1980/01/01 00:00:00」になる時もあります。
これではだめですね。
検索してみると、Windows Server2008 のバグ(?)のような記事が MSのサポートにありました。
それによると、「net statistics workstation コマンド」を使いなさいとありました。(ただし、SP1以降に限ります)
さっそく試してみると・・・

  ↑
いい感じです。
・・・で、スクリプトを以下のように変更しました。
$winstats = shell_exec("net statistics server);
   ↓
$winstats = shell_exec("net statistics workstation);
また、uptime.exe を使う方法も紹介されていました。

戻る

サイトトップへ