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