最近在使用程式定時備份 MongoDB,發現在備份之後的 code 都無法執行。
查了一下才發現,mongodump 的 message 是往 stderr 丟,故程式不能以 stderr 是否有字串來判斷成功與否。
應該要對 stderr 再做一次過濾,如果有 "Failed" or "error ",理論上就是 dump 過程中有錯誤。
不過因為我不知道所有的錯誤訊息內容,以上方式只是針對 MongoDB service 沒有啟動的 case。
另外,為了自動排程執行,有些人可能是用 Windows batch 再包一層。
如果要在 batch 中將訊息直接導向到 log,正確做法應該如下。
run.bat > back.log 2>&1
">" 前面沒有寫就表示 default (STDOUT=1)。
"2>&1" 將 STDERR(2) 導向到 STDOUT(1)。
沒有留言:
張貼留言