stdoutで印刷するプログラムがありますが、各インスタンスのstdoutがsedにパイプされ、次の結果(3つのsed)がPythonプログラムにパイプされる複数のインスタンスがあります。私はこれをやっています
rtl_power -f 430M:434M:3.2M -g 30 -i 2 | sed -i '/2024-03-25/a \ dongle1' | python calc.py
これは1つのインスタンスでは効果がありましたが、今では3つのインスタンスがあります。
rtl_power -f 430M:434M:3.2M -g 30 -i 2 | sed -i '/2024-03-25/a \ dongle1'
rtl_power -f 430M:434M:3.2M -g 30 -i 2 | sed -i '/2024-03-25/a \ dongle2'
rtl_power -f 430M:434M:3.2M -g 30 -i 2 | sed -i '/2024-03-25/a \ dongle3'
私はそれらをすべて同じインスタンスにcalc.py
(同時に)接続していくつかの計算を行うことができるようにしたいです。 PS FIFOとファイル書き込みはリアルタイムで計算が行われ、ストリーミング出力も rtl_power
あります
編集する:
コンソールタブ1:
rtl_power -f 430M:434M:3.2M -g 30 -i 2 | sed -u '/2020-03-26/a \ dongle1' > /home/username/gatewayx
コンソールタブ2:
python /home/username/do.py < /home/username/gatewayx
出力
2
device dongle1 strength -29.04
2020-03-26, 13:49:38, 430000000, 433200000, 3200000.00, 186, -29.04, -29.04
8
2
device dongle1 strength -29.04
2020-03-26, 13:49:40, 430000000, 433200000, 3200000.00, 295, -29.04, -29.04
8
2
device dongle1 strength -29.04
2020-03-26, 13:49:42, 430000000, 433200000, 3200000.00, 302, -29.04, -29.04
8
2
device dongle1 strength -29.04
2020-03-26, 13:49:44, 430000000, 433200000, 3200000.00, 303, -29.04, -29.04
8
2
device dongle1 strength -29.03
2020-03-26, 13:49:46, 430000000, 433200000, 3200000.00, 295, -29.03, -29.03
(この時点で出力を停止します)
メモ用のPythonスクリプト:
import time
import datetime
import sys
def printthis(Var):
print Var
while True:
donglename="emptry"
dbs="emptry"
line=sys.stdin.readline()
if not line:
continue
conts=line.split(' ')
ll=len(conts)
print(ll)
if len(conts)==8:
#donglename=conts[8]
#donglename=donglename.replace('\n','')
dbs=conts[7]
dbs=dbs.replace(',','')
line2=sys.stdin.readline()
if not line2:
continue
conts2=line2.split(' ')
ll2=len(conts2)
print(ll2)
if len(conts2)==2:
donglename=conts2[1]
donglename=donglename.replace('\n','')
#dbs=conts[7]
#dbs=dbs.replace(',','')
print("device "+donglename+" strength "+dbs)
sys.stdout.write(line)
sys.stdout.flush()
time.sleep(1)