
我想觀看一個每 5 分鐘被覆蓋一次的文件less
。我怎樣才能less
遵循新的文件描述符而不是保留舊的顯示?watch "cat file"
不會這樣做,因為檔案太長,無法放入一個終端機視窗。
答案1
您可以透過在檢視 中的檔案時發出F
指令 ( ) 來獲得此效果。若要停止關注並切換回尋呼,請按Shift+F
less
Ctrl+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
若要停止執行stuff
,rm
請在另一個 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
不過,它似乎沒有自動重新載入功能。