リアルタイムモニタlogファイル
2796 ワード
プロセスが実行され、logを書き続けているので、logファイルの更新(一般的にdebugで使用される)をリアルタイムで監視する必要があります.どうすればいいですか.絶えず開いて、ファイルを閉じますか.いいえ、少なくとも2つの方法があります.2つの一般的なコマンドから来ています. tail -f log.txt、もう一つのプロセスはlogを書いていますが、tailを使うと、新しいコンテンツ をリアルタイムで印刷することができます. less log.txt、そして更新をモニタする場合はFを押し、モニタを一時停止する場合はCTRL+Cを押すと、ページを上下にめくって表示し、モニタを続けてFを押すことができます.この機能はtailよりも強いです.
簡単にシミュレーションできます.は、1つのshellでファイルを更新し続けます.
別のshellでtail-f log.txt or less log.txt
tailのようなプログラムを書くのも簡単です.
これはいい面接問題にすることができます.
簡単にシミュレーションできます.
$ count=1; while true; do echo hello, world $count >> log.txt; count=$(($count+1)); sleep 1s; done
tailのようなプログラムを書くのも簡単です.
# Notices:
# 1. the 3rd parameter of open() is to disable file buffering
# so file updated by another process could be picked up correctly
# but since your focus is newly added tail, enable buffering is ok too
# 2. It is not necessary to fh.tell() to save the position, and then seek()
# to resume, as if readline() failed, the pointer stay still at the EOF
import sys
import time
filename = sys.argv[1]
with open(filename, 'r', 0) as fh:
while True:
line = fh.readline()
if not line:
time.sleep(1)
else:
print line
これはいい面接問題にすることができます.