我想不出一个算法在一段时间后重新执行tail命令。换句话说,刷新。现在,代码适用于任何带* .log的现有文件。但是,当创建新日志时,“tail”命令不会看到该新文件,除非我停止并再次重新执行该命令。所以我试图想出一个算法,我可以让python在x时间后重新执行subprocess.Popen行...我尝试了一个嵌套的while循环但是只是保持打印日志文件的最后一行连续......我试着用“看尾巴......”但是它不喜欢它并且输出是空白的......
以下是我现在的代码:
syslog = []
tail = subprocess.Popen('tail -f -n 1 /mnt/syslog/**/*.log', shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
while True:
line = tail.stdout.readline()
line = line.strip('\n')
if(re.search('mnt',line)) or (line == ''):
pass
else:
syslog.append(line)
multithread_engine(syslog)
del syslog[:]