我在服務器上有一個名爲writelog
的日誌文件,大約是2GB
。如何從linux終端刪除日誌文件的內容?
我想從文件中刪除第一個100,000
行。我可以打開文件並刪除這些行,但由於文件的大小,我需要永久下載它。
那麼,是否可以從Linux終端做到這一點?如果是的話如何?
我在服務器上有一個名爲writelog
的日誌文件,大約是2GB
。如何從linux終端刪除日誌文件的內容?
我想從文件中刪除第一個100,000
行。我可以打開文件並刪除這些行,但由於文件的大小,我需要永久下載它。
那麼,是否可以從Linux終端做到這一點?如果是的話如何?
如果您運行的是Linux服務器,可以使用ssh
:
ssh [email protected] sed -i '1,100000d' /path/to/logfile
這可能是更好地保持過去的1000行:
mv writelog writelog.bak
tail -1000 writelog.bak > writelog
而且你應該啓用logrotate
(manual)爲文件。然後系統將確保文件不會超出比例。
你會得到「文件存在」錯誤 – Bala
@Bala取決於你的shell設置...更好的方法是:':> | writelog'來覆蓋''-C'/'noclobber'選項...在C shell中,這是:':>! writelog' ...':'是內置的「空命令」,它什麼都不做,不輸出,總是退出0。 – Carpetsmoker
你可以看到http://stackoverflow.com/questions/2112469/delete-specific-line-numbers-from-a-text-file-using-sed –