当前位置:首页 > 计算机相关 > ubuntu系统 > 正文内容

ubuntu16最新版本下iotop无法使用的解决办法

piikee6年前 (2018-05-31)ubuntu系统684
ubuntu16更新到最新版本,启动iotop出现如下错误:
Traceback (most recent call last):
File "/usr/sbin/iotop", line 17, in <module>
main()
File "/usr/lib/python2.7/dist-packages/iotop/ui.py", line 620, in main
main_loop()
File "/usr/lib/python2.7/dist-packages/iotop/ui.py", line 610, in <lambda>
main_loop = lambda: run_iotop(options)
File "/usr/lib/python2.7/dist-packages/iotop/ui.py", line 508, in run_iotop
return curses.wrapper(run_iotop_window, options)
File "/usr/lib/python2.7/curses/wrapper.py", line 43, in wrapper
return func(stdscr, *args, **kwds)
File "/usr/lib/python2.7/dist-packages/iotop/ui.py", line 501, in run_iotop_window
ui.run()
File "/usr/lib/python2.7/dist-packages/iotop/ui.py", line 155, in run
self.process_list.duration)
File "/usr/lib/python2.7/dist-packages/iotop/ui.py", line 434, in refresh_display
lines = self.get_data()
File "/usr/lib/python2.7/dist-packages/iotop/ui.py", line 415, in get_data
return list(map(format, processes))
File "/usr/lib/python2.7/dist-packages/iotop/ui.py", line 388, in format
cmdline = p.get_cmdline()
File "/usr/lib/python2.7/dist-packages/iotop/data.py", line 292, in get_cmdline
proc_status = parse_proc_pid_status(self.pid)
File "/usr/lib/python2.7/dist-packages/iotop/data.py", line 196, in parse_proc_pid_status
key, value = line.split(':\t', 1)
ValueError: need more than 1 value to unpack

出错原因:新版本ubuntu16的status信息不一定都是:\t来分割信息的了。iotop还没更新过来,所以分割会出现有些信息分割出来只有一个key,没有value.目前iotop还没更新过来,所以临时解决办法就是跳过这些分割出来只有一列的信息。
 
解决办法:
vi /usr/lib/python2.7/dist-packages/iotop/data.py
找到196行,将:
[4个空格]try:
[8个空格]for line in open('/proc/%d/status' % pid):
[12个空格]key, value = line.split(':', 1)
[12个空格]result_dict[key] = value.strip()
[8个空格]except IOError:
[12个空格]pass # No such process

更改为:
[4个空格]try:
[8个空格]for line in open('/proc/%d/status' % pid):
[12个空格]try:
[16个空格]key, value = line.split(':', 1)
[12个空格]except:
[16个空格]break
[12个空格]result_dict[key] = value.strip()
[4个空格]except IOError:
[8个空格]pass # No such process

注意python是以空格作为标识的,注意每行前面的空格数量。

扫描二维码推送至手机访问。

版权声明:本文由萍客小居发布,如需转载请注明出处。

本文链接:https://www.piikee.net/1323.html

分享给朋友:

相关文章

ubuntu14.04 解压rar和7z文件问题

rar问题apt-get   install  unrar   这是安装rar格式文件的解压apt-get   install  rar        这是安装rar文件的压缩接下来是如何使用,你可以直接输入rar  --help 会有很...

(In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))

 (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))的解决办法。在ubuntu系统中,想umount...

find命令多目录多文件查找和批量删除

linux,ubuntu,centos等系统下find文件查找命令的多目录多文件查找:find 目录一 目录二 目录三 -iname *.swf -or -iname *.txt -or -iname *.inc -or -iname *....

vi编辑器删除第一行到当前光标位置的命令

vi编辑器删除第一行到当前光标位置的命令为:1,.d其中1表示从第一行开始,逗号是分隔符,.表示当前行,也可以输入3表示第三行,d表示删除。...

vim文本处理

1. 基本的替换:s/vivian/sky/ 替换当前行第一个 vivian 为 sky:s/vivian/sky/g 替换当前行所有 vivian 为 sky:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个...

ubuntu下设置iptables方法

# whereis iptables #查看系统是否安装防火墙可以看到:iptables: /sbin/iptables /usr/share/iptables /usr/share/man/man8/iptables.8.gz #表示已经...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。