別再 rm 日誌了:Linux 安全清空日誌的正確姿勢
閱閱界編輯部1閱讀2分鐘
磁盤告警一響,很多人第一反應是 rm 日誌文件,結果空間沒釋放,服務還可能寫丟。這篇把安全清空日誌的正確姿勢講透,照着做,不斷寫入、不丟數據。
先說結論:正在被寫的文件不能刪,只能截。rm 刪的是文件名,進程手裏還攥着句柄,空間照樣佔着。正確動作是把文件截短,讓寫文件的進程無縫繼續。記住這句,半夜救火不慌。
最常用的就是截短三選一。冒號重定向最順手,一行命令清空當前日誌;truncate 命令語義最清楚,還能指定大小;echo 空寫適合要留一行標記的場景。三者效果一樣,選你記得住的那個,關鍵時刻別現查文檔。
還有兩種情況要分清。日誌在瘋狂刷屏時,先看是誰在寫,必要時先停掉或調低級別再清,否則剛清完又滿。第二種是刪錯了已經 rm 的情況,別重啓服務賭運氣,先用句柄找回數據,再重建文件。順序錯了,數據就真沒了。多說一個新手常問的:能不能寫個定時任務每天自動清?能,但別對業務日誌這麼幹。自動清治標不治本,哪天把排查問題的關鍵記錄清掉了,省下的磁盤換來的是兩眼一抹黑。定時任務只適合清明確可再生的臨時文件,業務日誌的老去,交給切分和歸檔,別交給刪除。
真正省心的是讓日誌自己轉。用 logrotate 按天按大小切分,配好保留份數和壓縮,磁盤永遠有餘量。再配一個磁盤水位告警,超過七成就提醒,留出白天處理的時間。救火再熟練,也不如不起火。
今天就做兩件事:把你最常用的那臺機器的日誌目錄看一遍,確認 logrotate 配了沒;把截短命令記到你的運維小抄裏。下次告警響起,你會感謝今天這五分鐘。 來源|博客園 jyzhao《別再 rm 日誌了:Linux 下安全清空日誌文件的正確姿勢》,https://www.cnblogs.com/jyzhao/p/23200588.html
評論(0)
暫無評論,來搶第一條。