Histoire originale: [tail -f en Python] (http://qiita.com/sakamotomsh/items/f1cc47010a90e1e790fb)
[Comme la queue en Python] (http://blog.liris.org/2010/01/pythontail.html) Je ne pense pas que ce soit si difficile.
Récemment, j'ai vu un article qui watchdog est utile.
J'ai essayé de l'utiliser pour la surveillance des fichiers. Pour le rendre indépendant du système d'exploitation [PollingObserver] Il semble utiliser (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()
Dans chaque terminal, procédez comme suit:
$ vm_stat -c 60 0.3 >> logs/vmstat.log
$ python tail-f.py logs/vmstat.log
Recommended Posts