Originalgeschichte: [tail -f in Python] (http://qiita.com/sakamotomsh/items/f1cc47010a90e1e790fb)
[Wie Schwanz in Python] (http://blog.liris.org/2010/01/pythontail.html) Ich denke nicht, dass es so schwer ist.
Kürzlich habe ich einen Artikel gesehen, in dem watchdog nützlich ist.
Ich habe versucht, dies für die Dateiüberwachung zu verwenden. Um es vom Betriebssystem unabhängig zu machen [PollingObserver] Es scheint zu verwenden (http://pythonhosted.org//watchdog/api.html#module-watchdog.observers.polling).
tail-f.py
#!/usr/bin/env python
import os
import sys
import time
from os.path import dirname, exists
from watchdog.events import FileSystemEventHandler
from watchdog.observers.polling import PollingObserver
class TailHandler(FileSystemEventHandler):
def __init__(self, path):
self.path = path
self.file = open(path, 'r')
self.pos = os.stat(path)[6]
def close(self):
self.file.close()
def print_line(self):
self.file.seek(self.pos)
for block in iter(lambda: self.file.read(32), ''):
print(block, end='')
self.pos = self.file.tell()
def on_modified(self, event):
if event.is_directory or self.path != event.src_path:
return
self.print_line()
def tail_like(path):
observer = PollingObserver()
handler = TailHandler(path)
observer.schedule(handler, dirname(path))
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
finally:
handler.close()
observer.join()
def main():
path = sys.argv[1]
if not exists(path):
print('{} is not found'.format(path))
return
tail_like(path)
if __name__ == '__main__':
main()
Gehen Sie in jedem Terminal wie folgt vor:
$ vm_stat -c 60 0.3 >> logs/vmstat.log
$ python tail-f.py logs/vmstat.log
Recommended Posts