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

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

piikee5年前 (2018-05-31)ubuntu系统445
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 会有很...

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

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

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

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

ubuntu升级内核的方法(命令行升级ubuntu的内核)

sudo apt-get install linux-generic-lts-xenial linux-image-generic-lts-xenial一路y下去,最后reboot重启。重启完uname -a就可以看到新内核版本了。...

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 #表示已经...

发表评论

访客

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