python做公司内部系统错误_Python程序可能导致文件系统错误?
概述:
你好.我有一個(gè)python程序,在9-5小時(shí)之間控制一個(gè)運(yùn)動(dòng)傳感器.該程序在樹(shù)莓派上運(yùn)行,存儲(chǔ)在帶有西方人v2.1 Debian OS的SD媒體上.該計(jì)劃在很大程度上依賴于time.sleep方法在非工作時(shí)間睡覺(jué),并在第二天上午9點(diǎn)恢復(fù)它的職責(zé).如果傳感器觸發(fā),它會(huì)通過(guò)網(wǎng)絡(luò)攝像頭自動(dòng)拍攝一張小圖片.
問(wèn)題:
直到最近該程序工作正常,直到某天有人觸發(fā)傳感器并且take_picture()函數(shù)無(wú)法初始化/ dev / video0.似乎udev沒(méi)有將設(shè)備映射到/ dev / video *,當(dāng)我重新插入網(wǎng)絡(luò)攝像頭并用“dmesg | tail”檢查它的狀態(tài)時(shí),我收到一個(gè)錯(cuò)誤:
[36725.201116] EXT4-fs error (device mmcblk0p2): udev
在研究了問(wèn)題并得出文件系統(tǒng)損壞的結(jié)論后,我試圖在SD媒體上運(yùn)行文件系統(tǒng)檢查.在該過(guò)程中解決了許多錯(cuò)誤,但重新安裝USB網(wǎng)絡(luò)攝像頭后再次出現(xiàn)相同的EXT4-fs錯(cuò)誤消息.
修復(fù)嘗試#1
此時(shí)我重新安裝了操作系統(tǒng)并重新運(yùn)行了我的傳感器python程序;兩天它工作,發(fā)送圖像,睡覺(jué).我假設(shè)一切正常,所以我關(guān)閉設(shè)備將傳感器放在更集中的位置.
啟動(dòng)設(shè)備并只是從ssh連接運(yùn)行“python”命令后,我收到此錯(cuò)誤:
Traceback (most recent call last):
File "/usr/lib/python2.7/site.py", line 562, in
main()
File "/usr/lib/python2.7/site.py", line 544, in main
known_paths = addusersitepackages(known_paths)
File "/usr/lib/python2.7/site.py", line 271, in addusersitepackages
user_site = getusersitepackages()
File "/usr/lib/python2.7/site.py", line 246, in getusersitepackages
user_base = getuserbase() # this will also set USER_BASE
File "/usr/lib/python2.7/site.py", line 235, in getuserbase
from sysconfig import get_config_var
ImportError: cannot import name get_config_var
在程序運(yùn)行的時(shí)間和重新啟動(dòng)之間沒(méi)有更改任何設(shè)置.我假設(shè)最壞的并再次檢查“dmesg | tail”并收到更多的文件系統(tǒng)錯(cuò)誤:
[36725.201116] EXT4-fs error (device mmcblk0p2): ext4_ext_check_inode:403: inode #21266: comm python: bad header/extent: invalid extent entries - magic f30a, entries 1, max 4(4), depth 0(0)
[36725.239030] EXT4-fs error (device mmcblk0p2): ext4_ext_check_inode:403: inode #21427: comm python: bad header/extent: too large eh_max - magic f30a, entries 1, max 516(4), depth 0(0)
在額外的文件系統(tǒng)檢查并重新啟動(dòng)后,運(yùn)行“python”:
[ 819.427780] EXT4-fs error (device mmcblk0p2): ext4_ext_check_inode:403: inode #21266: comm python: bad header/extent: invalid extent entries - magic f30a, entries 1, max 4(4), depth 0(0)
[ 819.470874] EXT4-fs error (device mmcblk0p2): ext4_ext_check_inode:403: inode #21427: comm python: bad header/extent: too large eh_max - magic f30a, entries 1, max 516(4), depth 0(0)
[ 819.570893] EXT4-fs error (device mmcblk0p2): ext4_xattr_block_get:232: inode #21265: comm python: bad block 128
在這一點(diǎn)上,我認(rèn)為這些錯(cuò)誤的原因可能與我的程序的核心有關(guān),但實(shí)質(zhì)上它很簡(jiǎn)單,只在創(chuàng)建圖片時(shí)寫(xiě)入磁盤.以下是罪魁禍?zhǔn)状a:
潛在問(wèn)題的代碼:
def take_picture():
cam = pygame.camera.Camera("/dev/video0",(320,240)) #1280x960 max but slow
pygame.init()
cam.start()
print "Capturing Image..."
image_output = cam.get_image()
pygame.image.save(image_output,'img_' +str(get_timestamp)+'.jpg')
cam.stop()
#activate PIR
def pir_init():
while True:
m = datetime.datetime.now().time().minute #loop through for current time
h = datetime.datetime.now().time().hour
d = datetime.datetime.today().weekday()
if d > 4:
print("Sleeping...")
print time_sleep
time_sleep = (((7 - d) * 3600) * 24) - (h * 3600) + (9 * 3600)
time.sleep(time_sleep)
elif h < 9:
print("Sleeping...")
time_sleep = (9 - h) * 3600
time.sleep(time_sleep)
elif h > 16:
print("Sleeping...")
time_sleep = ((24 - h) + 9) * 3600
time.sleep(time_sleep)
elif io.input(pir_pin):
print("PIR ALARM")
pygame.camera.init()
time.sleep(1.5)
take_picture()
send_gmail()
time.sleep(10) #cooldown to prevent email spew
else:
print "Waiting..."
time.sleep(0.5) #sleep and wait for movement
print m
print "Wait"
我上面可以看到的唯一潛在問(wèn)題可能是生成圖片或長(zhǎng)時(shí)間睡眠.
任何洞察可能導(dǎo)致這些重復(fù)文件系統(tǒng)錯(cuò)誤的內(nèi)容都將受到贊賞.提前致謝!
總結(jié)
以上是生活随笔為你收集整理的python做公司内部系统错误_Python程序可能导致文件系统错误?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: chipgenius怎么恢复u盘 恢复U
- 下一篇: k8s pod里访问不到外部ip_K8S