Windows ServerでTomcatサービスの依存サービスをscコマンドで変更したときのメモ。
Tomcatで動かすWebAppがローカルのSQL Serverに接続するアプリだったので、SQL Serverの起動後にTomcatを起動するよう設定したかった。
環境
- Windows Server 2012 Standard
- Tomcat 8.5.4 (Windowsインストーラ版)がインストール済 (サービス名はTomcat8)
- SQL Server 2014 がインストール済(サービス名はMSSQL$DB)
手順
以下手順は管理者権限があるユーザで実施する。
Windows PowerShellを管理者として起動し、cmdを起動する。(サービス変更に使用するscコマンドはPower Shellからは実行できない)
PS C:\> cmd
Microsoft Windows [Version 6.2.9200]
(c) 2012 Microsoft Corporation. All rights reserved.
C:\>
現在のTomcatの依存サービスを確認。
依存サービスはDEPENDENCIESの値。以下よりTcpip、Afdが依存サービス。
C:\>sc qc Tomcat8
[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: Tomcat8
TYPE : 10 WIN32_OWN_PROCESS
START_TYPE : 3 DEMAND_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : "C:\Tomcat 8.5\bin\Tomcat8.exe" //RS//Tomcat8
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : Apache Tomcat 8.5 Tomcat8
DEPENDENCIES : Tcpip
: Afd
SERVICE_START_NAME : LocalSystem
sc configコマンドで依存サービスを変更する。
依存サービスは depend=
で指定する。依存サービスは現在DENENDENCIESに登録されているサービスを含めて、スラッシュ区切りで指定する。
depend=
と、指定するサービスの間にはスペースが必要な事に注意。(他のパラメータ指定でも同様)
C:\>sc config Tomcat8 depend= "Tcpip/Afd/MSSQL$DB"
[SC] ChangeServiceConfig SUCCESS
変更後の依存サービスを確認。MSSQL$DBがDEPENDENCIESに追加されている。
C:\>sc qc Tomcat8
[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: Tomcat8
TYPE : 10 WIN32_OWN_PROCESS
START_TYPE : 3 DEMAND_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : "C:\Tomcat 8.5\bin\Tomcat8.exe" //RS//Tomcat8
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : Apache Tomcat 8.5 Tomcat8
DEPENDENCIES : Tcpip
: Afd
: MSSQL$DB
SERVICE_START_NAME : LocalSystem
参考
sc configコマンドのhelp
C:\>sc config help
説明:
レジストリおよびサービス データベースのサービス エントリを変更します。
使用法:
sc <サーバー> config [サービス名] <オプション1> <オプション2>...
オプション:
注意: オプション名には等号が含まれています。
等号と値の間にはスペースが必要です。
type= <own|share|interact|kernel|filesys|rec|adapt>
start= <boot|system|auto|demand|disabled|delayed-auto>
error= <normal|severe|critical|ignore>
binPath= <.exe ファイルへの BinaryPathName>
group= <LoadOrderGroup>
tag= <yes|no>
depend= <依存関係 (スラッシュ (/) で区切られています)>
obj= <AccountName|ObjectName>
DisplayName= <表示名>
password= <パスワード>