サービスの「状態」比較 #3

Windows Vista 以降のサービスの動作について、マイクロソフトから公開されている情報をいくつかピックアップしてみました。

本来こういう情報は、OS 上で確認できるように「ヘルプ」メニュー内に書かれているべきだと思うのですが・・・

 

 

=====================================

■ 1.  Windows Vista でサービスを管理する

マイクロソフトの WEB サイトですが、内容は書籍からの転載です。

「スタートアップの種類」の説明として「手動 サービスはスタートアップ時に自動的には起動しませんが、ユーザー、プログラム、または依存するサービスによって起動できます。」と書いてあることから、開始の契機がユーザー操作だけではないことが分かります。

他にもサービスの基本的な動作について一通り解説されており、Windows の管理を生業としているならば、確実に押さえておきたい内容となっています。

<補足>

回復操作の指定」の項に書かれていることは、実行中のサービスに障害が起きた場合の話です。

これもよくある勘違いなのですが、停止しているサービスを開始しようとして失敗した場合には当てはまらない(回復されない)ので、注意が必要です。

 

 

=====================================

■ 2. Windows サービスの機能強化

スタートアップの種類が [ 自動(遅延開始) ] だと、[ 自動 ] のサービスよりも約 2 分遅れで開始されることが書かれています。

(1. では「コンピュータの起動後まもなく」という曖昧な表現だった事です。)

<補足>

インサイド Windows 第 6 版 上 という本の 367 〜 368 頁には、この 2 分という時間を変更するレジストリ値が紹介されています。

例えば 8 分遅延させたい場合は、デフォルトでは存在しない下記レジストリ値を作成します。

(レジストリ値の種類や単位までは本に書いていません。私が Windows 7 で実際に確認した結果です。)

レジストリキー : HKLM¥SYSTEM¥CurrentControlSet¥Control

レジストリ値      : AutoStartDelay  (REG_DWORD)

データ                    : 480000 (10 進数 , ミリ秒)

※ 個別のサービスではなく、[ 自動(遅延開始) ] の全サービスに対して適用される設定です。

 

 

=====================================

■ 3. Windows 7 および Windows Server 2008 R2 のスタンドアロン環境で Windows Time サービスが自動的に起動しない

トリガー起動サービス」について解説されています。

Windows 7 や Windows Server 2008 R2 では、GUI の管理ツール「サービス」の画面では存在すら確認出来ない裏設定 (?) だったのですが、Windows 8 や Windows Server 2012 以降は確認出来るようになっています。存在だけは。

 

 

まだまだつづく

 

サービスの「状態」比較 #2

前回からだいぶ間が空いてしまいましたが、よくあるお問い合わせ「OS を再起動したところ、再起動前は実行されていなかったサービスが、再起動後に勝手に実行されている。これは問題ではないか。」についての第二回です。

 

 

例えば Windows 7Windows Server 2008 R2 の場合ですと、サービスの「スタートアップの種類」は4種類あります。

OS 起動時に自動的に開始される [ 自動 ]、それより 2 分遅れで自動的に開始される [ 自動(遅延開始)] 、何らかの契機により必要に応じて開始される [ 手動 ] 、まったく動かない [ 無効 ] です。

 

 

これらのうち [手動] という表現が問題で、「人間が手作業で [ 開始 ] ボタンを押した時にだけ開始する」サービスだという誤解を生んでいます。

実際にはそういう意味ではなく、人間の操作によらずとも、コンピューターの内部動作により必要に応じて随時開始(用が済んだら停止)されます。

 

 

そのことは、イベントビューアの「システム」ログで確認出来ます。

何らかのサービスが開始された際には「レベル:情報, ソース:Service Control Manager, イベント ID:7036, 説明:○○サービスは 実行中  状態に移行しました。」というイベントが記録されますので、パソコンを半日ぐらい手を触れずに放置してから確認してみてください。

いくつかのサービスが勝手に開始していることを確認出来ると思います。

(停止の際に記録されるイベントも、同ソースの同イベント ID です。)

 

 

なお「スタートアップの種類」を [ 自動 ] から [ 手動 ] に変更した場合、「システム」ログに「レベル:情報, ソース:Service Control Manager, イベント ID:7040, 説明:○○サービスの開始の種類は 自動的な開始  から 要求による開始 に変更されました。」というイベントが記録されます。

全部「要求による開始」という表現に統一しておけば無駄な誤解を生むことも無いはずなのですが、マイクロソフトはそこまで考えていないのでしょう。。。

 

 

このように、サービスの中には勝手に開始および停止するモノもありますので、OS 再起動の前後でサービスの状態を単純比較することに、たいした意味は有りません。

(もしかしたら、完全一致するケースの方が珍しいのかもしれません。)

意味のあるチェックをするとしたら、「このサーバーにおいて必ず開始されていなくてはいけない○○サービスが、ちゃんと開始されているか?」といったように、もっと的を絞る必要があります。

DNS サーバーなのに DNS Server サービスが開始されていなかったら、それは当然問題ですからね。

 

 

しかし、実際にこのお問い合わせいただいた場合に、本当に問題が起きていたことはほとんどありません。

大抵の場合は、そのサービスのスタートアップの種類が [ 手動 ] であるがために、状態を確認したタイミングでたまたま開始(または停止)されていただけです。

 

 

まだつづく。

サービスの「状態」比較

サポートセンターに寄せられるお問い合わせは多種多様ですが、中には判で押したような同じパターンのお問い合わせも散見されます。

多くの場合、回答も決まりきった内容となります。

新規カテゴリー「よくあるお問い合わせ」では、そんなパターンについて紹介します。

 

 

まず一回目に取り上げるパターンは、「OS を再起動したところ、再起動前は実行されていなかったサービスが、再起動後に勝手に実行されている。これは問題ではないか。」というものです。

このお問い合わせ自体に、サーバーを管理する上での問題点が潜んでいますので、複数回に分けて丁寧に解説したいと思います。

 

 

まずは「サービス」についてざっくり説明します。

Windows における「サービス」の概念について詳細に説明するのはちょっと難しいのですが、「OS やアプリケーション自身が、ユーザー操作に依らず行っている仕事」だと思っていただければ十分かと。

基本的にバックグラウンドで動いているので、何かトラブルでも無ければ、ユーザーがサービスの動きを意識する必要はほとんどありません。

現時点で OS 上に存在するサービスの一覧を GUI で確認する場合、管理ツール「サービス」を利用します。(起動コマンド : services.msc)

インストールされている役割やアプリケーション等によってサービスの面子は異なりますが、[状態] の列を見ていただくと、それぞれのサービスが実行中か否かが分かります。(OS のバージョンにより表記が若干異なり、実行中のサービスであれば "開始" あるいは "実行中" と表示されます。停止中であれば空欄となります。)

 

 

このお問い合わせの背景には、「OS の状態が一定であれば、各サービスの状態も一定のはず。」という考え(というか思い込み)があるケースが多いので、そうではないということを次回以降解説していきます。

 

 

つづく