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>