nohup 日誌重定向 日誌清空

2021-09-12 06:08:37 字數 796 閱讀 2418

在linux 系統上可以使用nohup 來執行命令,nohup 可以像控制台一樣完整顯示程式輸出的日誌資訊

簡單的用法:

nohup /test.sh > /test.log  2>&1 &
這樣test.sh 執行所有的日誌資訊都會記錄在 test.log 中

在實際使用中 test.log 會隨著程式執行的時長和日誌量造成 test.log 增大也不方便管理,於是就想法清空日誌

簡單暴力的方法就是重啟程式,會自動清空,但是如果在不重啟程式的情況下清空檔案內容,讓日誌檔案重新記錄

linux 清空檔案方法有很多,這裡舉例說明使用:

cp /dev/null  /test.log
這樣 test.log 就變空了,可是在實際使用中發現,test.log 一會兒又會變化原大小,比如test.log 原大小為10kb 執行命令後大小為0kb 當程式執行有新日誌時test.log 大小又馬上變為10kb+ 但是內容只有新日誌內容,沒有清空前的內容了。

經過查閱資料和測試,最終找到問題了 > /test.log 是覆蓋原檔案內容,因為我們執行清空命令,原程序還是有原日誌的資訊因為對於程序已經獲取到對應檔案的控制代碼了。當有新日誌時對應程序會直接覆蓋內容,這樣造成資料不一致

解決方法使用追加日誌檔案的方法,把執行命令修改為:

nohup /test.sh >> /test.log  2>&1 &
這樣執行日誌就是以追加的方式寫入檔案,當我們需要清空日誌時執行清空命令,然後新的日誌會追加進去而不是再覆蓋進去。

日誌 重定向

python 將終端 terminal 或者控制台的輸出結果輸出至 log 檔案 以檔案形式儲存 重定義 logger 類,然後 sys.stdout logger log檔名及路徑 import sys class logger object def init self,logfile defau...

docker kafka日誌檔案重定向

專案採用docker compose啟動kafka,預設日誌檔案會寫入 var lib docker volumes 導致系統磁碟被寫滿。加入下面kafka log dirs配置,並且把配置的容器內位址對映到系統資料資料夾下即可 kafka image wurstmeister kafka cont...

Linux下日誌重定向

最近由於專案的需要,需要將ipc中的日誌同步到sd卡中,以便後續ipc出現問題了進行分析。由於我們程式的架構是多程序的,為了將所有程序的日誌同步到sd卡中,程序間需要傳遞檔案描述符,然後將該描述符重定向即可。include include include include include includ...