アキはフリーランスのプログラマーです >> Java >> Ant

このエントリーを含むはてなブックマーク このエントリーを含むECナビ人気ニュース

AntからNT サービスを停止・開始する

NTサービスを制御する

scというMS-DOSコマンドがありますので、それをExecタスクを用いて呼び出します。


開始にはstart

停止にはstop

をscコマンドの一つ目の引数で渡します。


そして二つ目の引数には、サービス名を渡します。

一つ目の引数にマシン名を渡すとネットワーク経由でサービスの管理もできるようです。


使用例

再起動の成功例、以下のような感じの出力がでます。

        [exec] 
        [exec] SERVICE_NAME: Apache Tomcat 4.1
        [exec]         TYPE               : 10  WIN32_OWN_PROCESS 
        [exec]         STATE              : 3  STOP_PENDING 
        [exec]                                 (STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN)
        [exec]         WIN32_EXIT_CODE    : 0	(0x0)
        [exec]         SERVICE_EXIT_CODE  : 0	(0x0)
        [exec]         CHECKPOINT         : 0x0
        [exec]         WAIT_HINT          : 0x88b8
        [exec] 
        [exec] SERVICE_NAME: Apache Tomcat 4.1
        [exec]         TYPE               : 10  WIN32_OWN_PROCESS 
        [exec]         STATE              : 2  START_PENDING 
        [exec]                                 (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
        [exec]         WIN32_EXIT_CODE    : 0	(0x0)
        [exec]         SERVICE_EXIT_CODE  : 0	(0x0)
        [exec]         CHECKPOINT         : 0x0
        [exec]         WAIT_HINT          : 0x7d0
        [exec]         PID                : 1368
        [exec]         FLAGS              : 
BUILD SUCCESSFUL
Total time: 10 seconds

Tomcatを停止します。

<target name="stop">
<exec executable="sc">
<arg value="stop"/>
<arg value="Apache Tomcat 4.1"/>
</exec>
</target>

Tomcatを開始します。

<target name="stop">
<exec executable="sc">
<arg value="start"/>
<arg value="Apache Tomcat 4.1"/>
</exec>
</target>

Tomcatを再起動します。

sleepタスクで時間まつのは美しくないけど

<target name="stop">
<exec executable="sc" resultproperty="stop">
<arg value="stop"/>
<arg value="Apache Tomcat 4.1"/>
</exec>
<sleep seconds="10"/>
<exec executable="sc">
<arg value="start"/>
<arg value="Apache Tomcat 4.1"/>
</exec>
</target>

関連

Windows XPでNTサービスを制御する


このエントリーを含むはてなブックマーク このエントリーを含むECナビ人気ニュース