Linux

如何記錄連續流的最後 X 行

  • March 29, 2022

我有一些應該或多或少無限期執行的程式碼,但是在它崩潰的情況下,我希望看到它的輸出。是否有任何命令或命令組合我可以在 Linux 中使用來僅儲存命令標準輸出的最後 X 行,這樣如果我的程式碼已經執行了幾天,我最終不會得到一個 100,000 行的文本文件但是只有最後說,已經輸出了 100 行?

更重要的是,是否可以讓這個文本文件中始終只有最後 100 行左右,這樣如果我在程式碼執行時隨時查看它,我可以看到我的程式碼一直在做什麼?

您正在尋找“環形緩衝區”。Serverfault Sister站點連結到Linux接受的答案:

將日誌文件變成一種循環緩衝區

100000 行每行 100 個字元仍然只有大約 10 MB,因此保存所有內容並蒐索您想要的內容,或者只是閱讀tail.

但是,如果您不想全部保存,則有一些選擇。對於日誌文件,通常會輪換日誌,即在文件足夠大後,將其重命名並通知程序重新打開其輸出,然後轉到具有相同名稱的新文件。如果程序本身不知道如何執行此操作,則可能需要修改程序。(只是重命名文件無濟於事,因為打開的文件句柄仍將指向重命名的文件。)

上述問題的解決方法:將輸出傳送到logger,將其發送到 syslog,然後對輸出進行日誌輪換,因為 syslog 肯定會支持它。負面因素:有點混亂,因為它會污染無關的日誌文件,除非您注意將特定的日誌數據配置到單獨的文件中。也增加了一點成本。

三:在裡面執行程序,screen把回滾視窗的大小設置成你喜歡的大小。(screen -h <N>啟動時,或使用:scrollback <N>inside screen 更改大小。開始時在 screen 中滾動回滾可能有點不直覺,但您可以使用:hardcopy -h <filename>.

引用自:https://unix.stackexchange.com/questions/288179