
我的伺服器上正在運行的進程每天晚上都會在午夜被殺死。它正在工作,發生時我不在場,而且我沒有遠端存取權限。
殺戮發生在每天晚上 23 點 59 分非常規律。我知道這一點是因為當我第二天到達時:
- 處理截止時間為 23:59
- 該進程的日誌顯示最後修改時間為 23:59(並且新的日期日誌將在之後立即開始)。
由於殺戮發生在同一時間,我強烈懷疑是批次作業。我檢查了crontab
我們所有機器的 s,但沒有找到任何東西。顯然我錯過了一些東西。
我正在考慮制定一個監視腳本,該腳本將間歇性地報告輸出,在幾分鐘前ps
啟動並循環一段時間。at
這個想法似乎很弱而且很容易出錯,所以我想知道是否有人有更好的想法。
更多細節:
宇宙是一個非常大、非常古老的遺留系統;我的團隊中似乎沒有人知道這樣一個過程(如果有人知道,她就會加入我們的團隊)儘管較大的組織由數千名員工組成,但理論上他們中的許多人都可以訪問此流程(我不認為為什麼他們會這樣做)。換句話說,安全措施不是很嚴格。
環境由多台運行 Solaris 10 的電腦組成。
這不是生產環境,因此超時或停機時間並不重要。
我並不排除殺戮可能不是由於批次作業造成的可能性,儘管由於計時的準確性而不太可能。
顯然,我們的簿記工作有缺陷,因此任何可以想像的事情都有可能發生。
我的問題是採取的最佳策略是什麼?它屬於「在遺留系統上工作的樂趣」的更大保護傘。我正在開始編寫我的腳本,我將很快將其發佈到此處以獲取反饋。同時,如果有人有更好的想法,請說出來。
答案1
定期輪換日誌很常見,在午夜輪換日誌很常見。許多應用程式會自動執行此操作。
對於那些沒有的人來說,有類似的工具logrotate
可以輪換。許多程式被配置為在發送 HUP 信號時重新打開其日誌,這是logrotate
.
需要檢查的事項:
- 所有的PID都改變了嗎?如果沒有,那麼程式可能會輪換它們自己的日誌,或者對其日誌輪換做出適當的回應。
- 對於更改 PID 的程序,它們是否在午夜重新啟動?如果沒有,請檢查他們的父母,看看它做了什麼。
- 檢查 root 的 crontab 以查看一天結束時運行的進程。
- 檢查 crontab 中的進程使用者 ID,以查看當天結束時執行的進程。
- 檢查日誌檔案是直接寫入還是由輪轉日誌的日誌寫入器寫入。