通过子进程为新创建的文件重新执行tail命令

时间:2017-09-12 21:33:42

标签: python loops subprocess tail

我想不出一个算法在一段时间后重新执行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[:]

0 个答案:

没有答案