我想运行这样的命令
grep -w 1 pattern <(tail -f mylogfile.log)
基本上来自python脚本我想监视特定字符串的日志文件,并在我发现后立即继续使用python脚本。
我正在使用os.system()
,但这是悬而未决的。 bash中的相同命令效果很好。
我有一个非常旧版本的python(v2.3),因此没有子进程模块。
我们有办法实现这个
答案 0 :(得分:1)
在Python 2.3中,您需要使用subprocess
from SVN
import subprocess
import shlex
subprocess.call(shlex.split("/bin/bash -c 'grep -w 1 pattern <(tail -f mylogfile.log)'"))
要明确,您需要从上面的SVN链接安装它。
由于您正在使用的shell重定向
,您需要使用/bin/bash -c
来调用它
<小时/> 的修改
如果要使用os.system()
解决此问题,只需将命令包装在/bin/bash -c
中,因为您正在使用shell重定向...
os.system("/bin/bash -c 'grep -w 1 pattern <(tail -f mylogfile.log)'")
答案 1 :(得分:0)
首先,我认为你应该使用的命令是grep -w -m 1 'pattern' <(tail -f in)
要在python中执行命令,请使用子进程模块中的Popen构造函数。了解更多信息 http://docs.python.org/library/subprocess.html
答案 2 :(得分:-1)
如果我理解正确,你想将输出发送到python,就像这样 -
tail -f mylogfile.log | grep -w 1 pattern | python yourscript.py
即,读取日志文件的所有更新,并将匹配行发送到您的脚本。
要从标准输入读取,您可以使用类似文件的对象:sys.stdin。
所以你的脚本看起来像
import sys
for line in sys.stdin.readlines():
#process each line here.