2013-08-03 27 views
0

我必须运行Java应用程序并读取syslog以触发其他基于Python的事件。Python - 我如何阅读和读出,以便其他读者可以阅读它进一步追求?

同时我还需要将其转储并存储在所有java输出的/var/tmp/log.log中,但是由于添加了新的Python事件控制器,因此我无法创建/var/tmp/log.log。任何想法我怎么能仍然做到这一点? 。例如:java |蟒蛇>> java的日志作为>> log.log的尾-f

BEFORE:(工作)

$ java -cp /var/tmp/Audio.jar Main.Boot >> /var/tmp/log.log & 
$ tail -f /var/tmp/log.log 

AFTER:(不工作)

$ java -cp /var/tmp/Audio.jar Main.Boot | python -u /var/tmp/consumer.py & 
$ tail -f ????? how can i have the java syslog still dumped as like my BEFORE ???? 

/var/tmp中/消费者的.py

import sys, time, os 
while True: 
    line = sys.stdin.readline() 
    if line: 
    sys.stdout.flush() 
    if "wall:on" in line: 
     os.system("/var/tmp/me.sh") 
    else: 
    time.sleep(1) 

/var/tmp/me.sh

#!/bin/bash 
export DISPLAY=:0.0 
ps aux | grep "/var/tmp/pp.py" | awk '{print $2}' | xargs kill -9; 
# System maintain.. 
python /var/tmp/pp.py & 
sleep 3 
ps aux | grep "/var/tmp/pp.py" | awk '{print $2}' | xargs kill -9; 

回答

2

关闭我的头顶:

$ java -cp /var/tmp/Audio.jar Main.Boot | tee /var/tmp/log.log | python -u /var/tmp/consumer.py & 
$ tail -f /var/tmp/log.log 

我还要做内部蟒蛇,而不是去awk的/ grep的东西通过一个子进程。

+0

但我如何“追加”使用'echo“hello”| tee /var/tmp/log.log | xargs回声;'? (它唯一写出最后一个输出的权利?) – YumYumYum

+1

尝试附加到输出的“tee -a /var/temp/log.log”。 – swstephe