昨天是Unix的crontab版,今天是Windows的排程版。Windows講究GUI,看似方便,但常因選項太多而不知從何找起。
【方案】寫支PowerShell Script由Windows的工作排程每五分鐘執行一次,該Script監控批次的Log最後修改時間,若與現在時間超過三分鐘,由Script重啟批次服務。
【實作】
以下以監控JBoss服務模擬監控批次服務。PowerShell Script名monitorJBoss.ps1
由下圖得知,服名名稱為JBossEAP6
在「控制台/系統及安全性/系統管理工具」下點選「工作排程器」
在「工作排程器程式庫」按右鍵彈出選單點選「建立工作」,或是選右側欄的「建立工作」
設定排程名稱,這裡輸入Monitor JBoss
設定觸發程序,按「新增」彈出設定窗
設定動作,按「新增」彈出設定窗
MonitorJBoss.ps1的內容,紅字為改成監控批次時所需修改的部份
$duration = (Get-Date) - (Get-Item "D:\EAP-6.3.0\jboss-eap-6.3\standalone\log\gc.log.0.current").LastWriteTime
Write-Host $duration.TotalMinutes
if ($duration.TotalMinutes -gt 3) {
$NOW = Get-Date -format "yyyyMMddHHmm"
$msg = Get-Date -Format "yyyy-MM-dd HH:mm"
$msg += " 批次當了!!"
Echo $msg | Out-file -Encoding UTF8 -FilePath "D:\Jemmy\TAIAS01_TEC_${NOW}.log"
Write-Host "Restart..."
Get-Service -DisplayName "JBossEAP6" | Stop-Service
Get-Service -DisplayName "JBossEAP6" | Start-Service
}