更少的“更新檔案”之類的功能

更少的“更新檔案”之類的功能

我想觀看一個每 5 分鐘被覆蓋一次的文件less。我怎樣才能less遵循新的文件描述符而不是保留舊的顯示?watch "cat file"不會這樣做,因為檔案太長,無法放入一個終端機視窗。

答案1

您可以透過在檢視 中的檔案時發出F指令 ( ) 來獲得此效果。若要停止關注並切換回尋呼,請按Shift+FlessCtrl+C

由於您的文件每 5 分鐘才更改一次,因此您也可以使用tail -f並指定更長的睡眠時間-s(預設為 1 秒)。例如,

tail -f -s 60 myfile

每 60 秒檢查myfile一次輸出。

編輯:由於誤導性問題,上述答案並不令人滿意。第二次嘗試如下:

less若要每 5 分鐘重新開啟同一個文件,請嘗試以下操作:

while true; do ( sh -c 'sleep 600 && kill $PPID' & less myfile ); done

這將產生一個子 shell,該子 shell 會在背景執行另一個 shell 進程,指示該進程在 5 分鐘後終止其父進程。然後它打開文件less。當後台 shell 指令殺死父子 shell 時,它也會殺死其所有子 shell,包括「less」指令。然後循環再次開始該過程。

據我所知,殺死它的唯一簡單方法是殺死原始 shell 所在的終端。

touch killfile
while [ -f killfile]; do stuff; done

若要停止執行stuffrm請在另一個 shell 中執行killfile。

答案2

你可以在 中做類似的事情vim

啟動伺服器會話vim

vim -R --servername refresh_session

然後在另一個控制台中,監視文件的更新並告訴 vim 會話在文件更新後立即重新加載文件:

inotifywait -e close_write -m your_log_file | while read filename events; do
    vim --servername refresh_session --remote $filename
done

一些問題。

  • vim如果你的編譯器沒有使用該功能,這當然不行clientserver
  • inoifywait當文件被刪除時將停止工作。所以我希望你的文件被覆蓋。當然,也可以解決這個問題。

如果您想獲得更像less的體驗,您可以使用less巨集來less獲取vim.

/usr/share/vim/vim73/macros/less.sh --servername refresh_session

答案3

你可以嘗試這個指令:tail -f file

答案4

我發現了一個古老的,但非常好的“不太”的程序(一個“尋呼機”)。它有一個刷新檔案的“R”命令。

它被稱為“lv”,您可以使用以下命令在 Ubuntu 上安裝它:

sudo apt install lv

不過,它似乎沒有自動重新載入功能。

相關內容