簡體   English   中英

Python:從后台子進程獲取stdout

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM