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

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

piikee4年前 (2018-05-31)ubuntu系统299
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

分享给朋友:

相关文章

(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...

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

ubuntu下vi编辑器左右方向出错,删除和i键出错的解决办法

其实是ubuntu下vi编辑器是简单版本导致的,可以apt-get update,然后apt-get upgrade更新一下系统包。然后 apt-get install vim-full 安装全功能版本的vim编辑器。这样子就不会发生向右键...

ubuntu等linux下大文件的排序去重

用sort即可对大文件进行排序去重了。命令行如下:sort -o ok.txt -T /disk/temp -u -m a.txt b.txt c.txt对文件a.txt,b.txt,c.txt进行排序去重,然后输出到ok.txt。参数说明...

发表评论

访客

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