Windows Server 2008 R2 でソフトウェア サービスを再起動するタスク スケジューラを作成するにはどうすればいいですか?

Windows Server 2008 R2 でソフトウェア サービスを再起動するタスク スケジューラを作成するにはどうすればいいですか?

数週間ごとに障害が発生する厄介なソフトウェア サービスがあります。このサービスには 2 つのコンポーネントがあります。サービス A とサービス B です。サービス B が異常な状態になり、サービス A からの接続を受け入れなくなります。唯一の解決策は、両方のサービスを手動で再起動するか、サーバーを再起動することです。

A と B のサービスを定期的に再起動するようにスケジュールしたいと思います。たとえば、24 時間ごとに再起動します。どのように実行すればよいでしょうか?

答え1

コメントの提案に従って、タイムアウト付きの適切な再起動シーケンスを含むバッチ ファイルを作成しました。タイムアウトは、サービス間の依存関係のために必要でした。タスク スケジューラを使用して、毎晩午前 4 時に管理者として実行するようにスケジュールしました。

net stop "Service B"
net stop "Service A"
timeout /T 10
net start "Service B"
timeout /T 10
net start "Service A"

これは理想的ではありませんが、10 人未満のユーザーによるリモート デスクトップ展開というこのシナリオには適しています。

答え2

破損したり紛失したりする可能性のあるbatファイルを作成する代わりに、スケジュールされたタスクを作成できます。複数アクション。1 つはサービスを停止するアクション、もう 1 つはサービスを再起動するアクションです。どちらもコマンドで実行されますNET。STOP および START 引数を指定し、その後にサービス名を指定します。

NET STOP "Service A" 
NET START "Service A"

こちらは方法を説明した StackOverflow の投稿。

答え3

Net Stop "ServiceName" && Net Start "ServiceName"

そして、&&を連鎖させてServiceBの停止/開始を行うこともできます。

ネット ストップ "ServiceA" && ネット スタート "ServiceA" && ネット ストップ "ServiceB" && ネット スタート "ServiceB"

答え4

bat ファイルを作成し、bat 内で次のようなコードを試すことができます。

net stop {サービス名} および net start {サービス名}

スケジュールされたタスクのプログラムとして bat ファイルを使用します。

関連情報