我这两天在学习树莓派,现在在尝试让pi开机就在后台启动一个程序,获取pi的CPU、GPU、内存占用率、CPU使用率,并将数据上传到yeelink上。但是问题来了:
1、每次开机的确都是能够自启动,但是程序只能前半部分,获取CPU、GPU温度,并且将后半截程序跳过,再回去循环执行前半截;
2、如果我在terminal里面python程序在后台运行,他只能执行前半部分到获取GPU温度,之后就死了;
3、这个程序如果我不让他在后台执行,直接在terminal里面执行的话,他有时能够完全执行的,

所以我想请问,有没有知道这具体是什么原因造成的?或者说我的程序里面哪些句子是不能在后台运行的?下面的是我的程序代码
#!/usr/bin python
# -*- coding: utf-8 -*-
import os
import requests
import json
import time
import string
import commands
def getcpu():
return(os.popen("top -n1"))#获取CPU的情况的函数
while True:
#获取CPU温度
file = open("/sys/class/thermal/thermal_zone0/temp")
temp=float(file.read())/1000
file.close()
apiurl_cpu='http://api.yeelink.net/v1.0/device/17020/sensor/29454/datapoints'
apiheaders={'U-Apikey':'08fc4e36ad2d49c3eb830de6bd6bad2d','content-type':'application/json'}
payload_cpu={'value':temp}
print temp
r=requests.post(apiurl_cpu,headers=apiheaders,data=json.dumps(payload_cpu))
#获取GPU的温度
gpu_temp=commands.getoutput('/opt/vc/bin/vcgencmd measure_temp').replace('temp=','').replace('\'C','')
apiurl_gpu='http://api.yeelink.net/v1.0/device/17020/sensor/29599/datapoints'
payload_gpu={'value':gpu_temp}
print gpu_temp
r=requests.post(apiurl_gpu,headers=apiheaders,data=json.dumps(payload_gpu))
#以下是调用函数获取CPU使用率以及内存的使用情况
cpuused=getcpu()
for cpuline in cpuused:
if cpuline[:3]=="%Cp":
CPU_Used=cpuline.split(":")[1].split(",")[0].split(" ")[-2]
payload_CPU_Usage={'value':CPU_Used}
apiurl_CPU_Usage='http://api.yeelink.net/v1.0/device/17020/sensor/29648/datapoints'
print CPU_Used
if "Mem:" in cpuline:
MemTotal=cpuline.split(":")[1].split(",")[0].strip("total").split(" ")[-2]
MemUsed=cpuline.split(":")[1].split(",")[1].strip("used").split(" ")[-2]
MemUsedRate=float(str(MemUsed))/float(str(MemTotal))
MemUsedRatio="%.2f"%(MemUsedRate*100)
apiurl_mem='http://api.yeelink.net/v1.0/device/17020/sensor/29600/datapoints'
payload_mem={'value':MemUsedRatio}
print MemUsedRatio
r=requests.post(apiurl_mem,headers=apiheaders,data=json.dumps(payload_mem))
print "===================="
time.sleep(30)
我要赚赏金
