[英]Python: get stdout from background subprocess
我正在嘗試使用python腳本(即'ifconfig -a eht0')在linux機器上獲取網絡接口的信息。 所以我正在使用以下代碼:
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啟動)時,我無法獲得輸出。
任何想法 ?
謝謝
您是否嘗試過使用“屏幕”?
proc = subprocess.Popen('screen ifconfig -a eth0', shell=True, stdout=subprocess.PIPE)
我不確定它是否可以正常工作。
嘗試使用proc.stdout.readline()而不是進行通信,同樣subprocess.Popen()中的stderr = subprocess.STDOUT可能會有所幫助。 請發布結果。
我找到了解決問題的方法,我猜想系統在crontab執行時無法識別ifconfig
函數。 因此,將完整路徑添加到子流程可以使腳本正確執行:
`proc = subprocess.Popen('/sbin/ifconfig -a eth0',shell=True,stdout=subprocess.PIPE)
proc.wait()
output = proc.communicate()[0]`
現在我可以管理輸出字符串了。
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.