yum 安裝 iotop 命令使用報錯

近期遇到安裝 iotop 後出現些錯誤:

  1. root@BJ-CentOS7 ~ # iotop
  2. Traceback (most recent call last):
  3. File "/sbin/iotop", line 17, in <module>
  4. main()
  5. File "/usr/lib/python2.7/site-packages/iotop/ui.py", line 620, in main
  6. main_loop()
  7. File "/usr/lib/python2.7/site-packages/iotop/ui.py", line 610, in <lambda>
  8. main_loop = lambda: run_iotop(options)
  9. File "/usr/lib/python2.7/site-packages/iotop/ui.py", line 508, in run_iotop
  10. return curses.wrapper(run_iotop_window, options)
  11. File "/usr/lib64/python2.7/curses/wrapper.py", line 43, in wrapper
  12. return func(stdscr, *args, **kwds)
  13. File "/usr/lib/python2.7/site-packages/iotop/ui.py", line 501, in run_iotop_window
  14. ui.run()
  15. File "/usr/lib/python2.7/site-packages/iotop/ui.py", line 155, in run
  16. self.process_list.duration)
  17. File "/usr/lib/python2.7/site-packages/iotop/ui.py", line 434, in refresh_display
  18. lines = self.get_data()
  19. File "/usr/lib/python2.7/site-packages/iotop/ui.py", line 415, in get_data
  20. return list(map(format, processes))
  21. File "/usr/lib/python2.7/site-packages/iotop/ui.py", line 388, in format
  22. cmdline = p.get_cmdline()
  23. File "/usr/lib/python2.7/site-packages/iotop/data.py", line 292, in get_cmdline
  24. proc_status = parse_proc_pid_status(self.pid)
  25. File "/usr/lib/python2.7/site-packages/iotop/data.py", line 196, in parse_proc_pid_status
  26. key, value = line.split(':\t', 1)
  27. ValueError: need more than 1 value to unpack

解決方案: 修改 /usr/lib/python2.7/site-packages/iotop/data.py 文件:

  1. root@BJ-CentOS7 ~ # vim /usr/lib/python2.7/site-packages/iotop/data.py
  2. def parse_proc_pid_status(pid):
  3. result_dict = {}
  4. try:
  5. for line in open('/proc/%d/status' % pid):
  6. key, value = line.split(':\t', 1)
  7. result_dict[key] = value.strip()
  8. except IOError:
  9. pass # No such process
  10. return result_dict

定位至 /usr/lib/python2.7/site-packages/iotop/data.py 文件196行,修改爲如下內容保存,重新運行iotop命令恢復正常:

  1. def parse_proc_pid_status(pid):
  2. result_dict = {}
  3. try:
  4. for line in open('/proc/%d/status' % pid):
  5. try:
  6. key, value = line.split(':\t', 1)
  7. except:
  8. break
  9. result_dict[key] = value.strip()
  10. except IOError:
  11. pass # No such process
  12. return result_dict

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章