我正在尋找一種方法來監視Linux上的程序寫入的文件。我在here中發現了tail -F
命令,並且還推薦使用less +FG
。我通過在一個終端運行tail -F file
測試它,和一個簡單的Python腳本:tail和less命令沒有實時監視文件
import time
for i in range(20):
print i
time.sleep(0.5)
在另一個
。我重定向輸出到文件:
python script.py >> file
我預計tail
將跟蹤該文件的內容,並更新固定的時間間隔顯示,而是僅包含了後終止命令寫入文件。
同樣的事情發生在less +FG
以及如果我看cat
的輸出。我也嘗試使用通常的重定向,它會截斷文件>
而不是>>
。在這裏它說文件被截斷了,但仍然沒有實時跟蹤它。
任何想法,爲什麼這是行不通的? (它的建議here,這可能是由於緩存的寫入,但因爲我的腳本運行超過10秒,我懷疑這可能不是原因)
編輯:在它的事項的情況下,我運行Linux Mint的18.1
Probaly你想'sys.stdout.write('%d \ n'%i)',或者等價物,因爲原來使用的'print'包含換行符。 – larsks
@larsks感謝您的評論,我在回答中修復了它 – Vinny
您可以將其保留爲'print'並仍然使用'sys.stdout.flush()'。 –