Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当os.system更新了systemctl时,请执行某些操作_Python - Fatal编程技术网

Python 当os.system更新了systemctl时,请执行某些操作

Python 当os.system更新了systemctl时,请执行某些操作,python,Python,我的代码目前看起来是这样的: 导入操作系统 操作系统(“journalctl-f”) 这将监视日志TLlive,每当日志TL更新时,它都会发布在标准输出中 我很好奇更新后我会怎么做,例如: 导入操作系统 操作系统(“journalctl-f”) 如果有新的东西: 做点什么(文本) 不知道我可以用什么来做这件事,提前谢谢 您可以使用Popen打开进程,并通过使用stdout中的while with readlines使其保持活动状态: import subprocess comm

我的代码目前看起来是这样的:

导入操作系统
操作系统(“journalctl-f”)
这将监视日志TLlive,每当日志TL更新时,它都会发布在标准输出中

我很好奇更新后我会怎么做,例如:

导入操作系统
操作系统(“journalctl-f”)
如果有新的东西:
做点什么(文本)

不知道我可以用什么来做这件事,提前谢谢

您可以使用Popen打开进程,并通过使用stdout中的while with readlines使其保持活动状态:

   import subprocess
    command = 'journalctl -f'
    p = subprocess.Popen(command, stdout=subprocess.PIPE, bufsize=1, shell=True)
    while True:
        if 'something' in p.stdout.readline():
            doSomething

os.system()
是完全错误的工具。您需要检查一些良好的起点。稍微好一点/快一点:将p.stdout:中的行的“无限循环加显式
读取行
调用”替换为
,如果行中的“某物”
,则测试变为
。允许您进一步检查
,迭代器协议几乎总是比重复的方法调用更有效。如果可能的话,我还建议在没有shell的情况下运行该命令,使
command=['journalctl','-f']
并删除
shell=True
,因为涉及shell可能会掩盖错误,引入不必要的缓冲层等。