Внешние диски WD Red, подключенные к Raspberry Pi, слишком быстро отключаются

Вероятно, есть более чистый способ, но вы можете получить предыдущую команду из истории с помощью

prev=$(fc -ln | tail -2 | head -1)
2
04.02.2018, 00:08
1 ответ

Aunque la respuesta de meuh es la respuesta correcta para esta pregunta, mi situación real implica una incursión de software y que yo sea un asqueroso millenial.
Reimplementé la solución de meuh en Python usando escrituras en lugar de lecturas.

import time
import datetime
import os

statFile = "/sys/block/<yourdevicehere>/stat"
logFile = "/some/file/on/another/drive.log"
dummyFile = "/some/file/on/drive/in/question"
updateInterval = 60 # seconds
keepAwakeTime = 30 * 60 # seconds
keepAwakeIOCount = 12 # empirically "proven"

# Clear the log file
open(logFile, "w").close()

def getIOCount():
    with open(statFile, "r") as fobj:
        fileContents = fobj.read()
    stats = fileContents.split()
    readCount = int(stats[0])
    writeCount = int(stats[4])
    return readCount + writeCount

# ==== main loop ==== #

maxIODiff = 0
averageIODiff = 0
diffCount = 0

previousIOCount = getIOCount()
timer = 0
while True:
    ioCount = getIOCount()
    if ioCount > previousIOCount:
        timer = keepAwakeTime

    ioDiff = ioCount - previousIOCount
    if ioDiff > maxIODiff:
        maxIODiff = ioDiff
    averageIODiff = (averageIODiff * diffCount + ioDiff) / (diffCount + 1)
    diffCount += 1

    previousIOCount = ioCount

    if timer > 0:
        line = str(ioDiff) + " " + str(maxIODiff) + " " + str(averageIODiff) + " " + datetime.datetime.now().strftime("%H:%M:%S") + "\n"
        with open(dummyFile, "w") as dummy:
            dummy.write(line)
            dummy.flush()
            os.fsync(dummy.fileno()),
        with open(logFile, "a") as log:
            log.write(line)
        previousIOCount += keepAwakeIOCount

    timer -= updateInterval
    time.sleep(updateInterval)

Aunque este es técnicamente menos correcto que la solución de meuh, no puedo analizar Perl y parece funcionar bien en mi configuración. Y tenía ganas de codificarlo por mi cuenta.

0
27.01.2020, 22:33

Теги

Похожие вопросы