我試圖通過一個python腳本,即'ifconfig -a eht0'在linux機器上獲取網絡接口的信息。所以我用下面的代碼:Python:從後臺子進程獲取標準輸出
import subprocess
proc = subprocess.Popen('ifconfig -a eth0', shell=True, stdout=subprocess.PIPE)
proc.wait()
output = proc.communicate()[0]
那麼,如果我執行從終端的腳本
python myScript.py
或
python myScript.py &
它工作正常,但在運行時從後臺(由crontab啓動)沒有活動外殼,我無法得到輸出。
有什麼想法?
謝謝
你怎麼用'output'來查看它是否有效(無論是在後臺還是在主動shell)?你把它保存到一個文件?如果是這樣,文件是否被創建,但沒有內容或根本沒有文件? –
如果你不設置'shell = True',比如'proc = subprocess.Popen(['ifconfig','-a','eth0'],stdout = subprocess.PIPE)''是否有區別? –
輸出被髮送到遠程數據庫,並且當它從終端運行時,我可以讀取數據。雖然如果我使用'shell = False'我得到這個錯誤'OSError:[Errno 2]沒有這樣的文件或目錄' – user3734366