GUIベースのソフトウェアから複数のbashルーチン を起動しようとしています。私が直面している問題は配管の問題です。ここで テストのbashスクリプト(bashScriptTest.sh):壊れたパイプのエラーPythonのサブプロセス
#!/bin/bash
#---------- Working
ls | sort | grep d > testFile.txt
cat testFile.txt
#---------- NOT working
echo $RANDOM > testFile2.txt
for i in `seq 1 15000`; do
echo $RANDOM >> testFile2.txt
done
awk '{print $1}' testFile2.txt | sort -g | head -1
そして、ここでエラーを作成するPythonスクリプト:
import subprocess
#
with open('log.txt','w') as outfile:
CLEAN=subprocess.Popen("./bashScriptTest.sh", stdout=outfile, stderr=outfile)
print CLEAN.pid
OUTSEE=subprocess.Popen(['x-terminal-emulator', '-e','tail -f '+outfile.name])
あなたはPythonスクリプトを実行しているからわかるように、壊れたパイプのエラーは、最初の3つのパイプ(最初の行)ではなく、代わりにawkによって行われた巨大な作業の後に が発生しました。 私は膨大な量のルーチンとサブルーチンをbash で管理する必要があり、またシェルを使用する必要があります。== Trueフラグは何も変更しません。 私はすべてのpythonの方法ですべてを書き込もうとしましたが、残念ながら 機会がありません。私はPython内のすべてのパイピングステップを書き直すことができます。 もう1つのことは、ターミナル内でbashスクリプトをテストすると、すべてが正常に動作することです。 本当にありがとうございます。前もって感謝します!
EDIT 1:
エラーを含むログ・ファイルは言う:
bashScriptTest.sh
log.txt
stack.txt
testFile2.txt
test.py
3
sort: write failed: standard output: Broken pipe
sort: write error
エラーメッセージとスタックトレースを追加してください! :) –
いつプロセスが終了するのを待っていますか? –
@AndréLaszlo私は質問を編集しました! – Mat