我试图通过一个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