Linuxマシン上で、ifconfig -a eht0というPythonスクリプトを使ってネットワークインタフェースの情報を取得しようとしています。私はPython:バックグラウンドサブプロセスからstdoutを取得する
python myScript.py
または
python myScript.py &
それが正常に動作しますが、それが実行されたときに、端末からスクリプトを実行している場合まあ
import subprocess
proc = subprocess.Popen('ifconfig -a eth0', shell=True, stdout=subprocess.PIPE)
proc.wait()
output = proc.communicate()[0]
:だから私は、次のコードを使用していますアクティブなシェルなしでバックグラウンド(crontabによって起動)から、私は出力を得ることができません。
ありがとうございました
あなたはそれが(かどうか、バックグラウンドでまたはアクティブシェルで)働いていたかいないかどうかを確認するためにoutput' 'で何をしますか?それをファイルに保存しますか?そうであれば、ファイルは作成されますが、内容はなく、まったくファイルが作成されませんか? –
'proc = subprocess.Popen(['ifconfig'、 '-a'、 'eth0']、stdout = subprocess.PIPE)'のように 'shell = True'を設定しないと、違いがありますか? –
出力はリモートdbに送信され、端末iから実行されたときにデータを読み取ることができます。私が 'shell = False'を使うと、OSError:[Errno 2]そのようなファイルやディレクトリはありません.' – user3734366