main_2.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. while True:
  24. current_stats = read_diskstats()
  25. byte_array = bytearray()
  26. counter = 0
  27. for disk in disks:
  28. read_diff = current_stats[disk]['reads'] - prev_stats[disk]['reads']
  29. write_diff = current_stats[disk]['writes'] - prev_stats[disk]['writes']
  30. if read_diff > 0:
  31. # print(counter)
  32. byte_array.append(counter)
  33. else:
  34. # print(counter+1)
  35. byte_array.append(counter+1)
  36. if write_diff > 0:
  37. # print(counter+2)
  38. byte_array.append(counter+2)
  39. else:
  40. # print(counter+3)
  41. byte_array.append(counter+3)
  42. counter += 4
  43. serial_port.write(byte_array)
  44. time.sleep(0.1) # Adjust the frequency of checking disk activity (1 second in this example)
  45. prev_stats = current_stats