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

2024-04-26 13:05:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想不出在一段时间后重新执行tail命令的算法。换句话说,刷新。现在,这段代码可以完美地用于任何带有*.log的现有文件。但是,当创建一个新日志时,“tail”命令不会看到新文件,除非我停止并再次执行该命令。所以我尝试着提出一个算法,让python重新执行子流程.Popen行后x时间量。。。我尝试了一个嵌套的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[:]

Tags: 文件代码命令算法logtruestdoutline