Logs
截斷在另一個程序中打開的文件
如果我嘗試
truncate -s 0 log.log
(:>log.log
具有相同的行為)磁碟上顯示的空間確實變得可用,但ls -l
文件的大小()仍然相同(但du
顯示較少)。據我了解,發生這種情況是因為指針仍然“舊”。此行為導致我無法使用
cat ... | grep ...
命令:CLI 說該文件是二進製文件。所以唯一的方法是使用less
或其他命令。那麼,如何截斷文件,即在另一個程序中以寫入模式打開並在截斷後具有正確的文件大小?我需要
log.log
將數據截斷到另一個文件,或者只是刪除文件中的整個數據而不刪除文件本身
你不能。“下一個要寫入的塊”指針保存在打開文件以進行寫入的程序的記憶體中。您無法從外部訪問它。
已經編寫了一些程序來關閉舊日誌並在收到信號時打開新日誌。
簡單地刪除文件,因為程序即將寫入塊 1024,將導致 1023 塊零,數據塊 1024。