我必须运行Java应用程序并读取syslog以触发其他一些基于Python的事件。
同时我还需要将其转储并存储在所有java输出的/var/tmp/log.log中,但因为添加了新的Python事件控制器,/var/tmp/log.log
我无法创建。知道怎么还能做到吗? 。例如:java | python>> java日志为>> log.log for tail -f
之前:(工作)
$ java -cp /var/tmp/Audio.jar Main.Boot >> /var/tmp/log.log &
$ tail -f /var/tmp/log.log
之后:(不工作)
$ 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/consumer.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;
答案 0 :(得分: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
我也会在python中执行awk / grep,而不是通过子进程。