main_2.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import subprocess
  2. import re
  3. import time
  4. import serial
  5. serial_port = serial.Serial('/dev/ttyACM0', 115200, timeout=1)
  6. disks = ['sda', 'sdb', 'sdc', 'sdd'] # List of disks to monitor
  7. def read_diskstats():
  8. with open('/proc/diskstats', 'r') as file:
  9. lines = file.readlines()
  10. disk_stats = {}
  11. for line in lines:
  12. data = line.split()
  13. if len(data) >= 14:
  14. if data[2] in disks:
  15. disk_stats[data[2]] = {
  16. 'reads': int(data[3]),
  17. 'writes': int(data[7])
  18. }
  19. return disk_stats
  20. prev_stats = read_diskstats()
  21. current_stats = read_diskstats()
  22. print(current_stats)
  23. prev_data = bytearray()
  24. while True:
  25. current_stats = read_diskstats()
  26. byte_array = bytearray()
  27. counter = 0
  28. for disk in disks:
  29. read_diff = current_stats[disk]['reads'] - prev_stats[disk]['reads']
  30. write_diff = current_stats[disk]['writes'] - prev_stats[disk]['writes']
  31. if read_diff > 0:
  32. # print(counter)
  33. byte_array.append(counter)
  34. else:
  35. # print(counter+1)
  36. byte_array.append(counter+1)
  37. if write_diff > 0:
  38. # print(counter+2)
  39. byte_array.append(counter+2)
  40. else:
  41. # print(counter+3)
  42. byte_array.append(counter+3)
  43. counter += 4
  44. if byte_array != prev_data:
  45. serial_port.write(byte_array)
  46. prev_data = byte_array
  47. time.sleep(0.1) # Adjust the frequency of checking disk activity (1 second in this example)
  48. prev_stats = current_stats