Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
蜕变的菜鸟
glances
提交
3617fb5d
G
glances
项目概览
蜕变的菜鸟
/
glances
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
glances
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3617fb5d
编写于
5月 11, 2016
作者:
N
Nicolargo
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Optimisation of the catch_key method
上级
aaf1eebb
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
96 addition
and
135 deletion
+96
-135
glances/outputs/glances_curses.py
glances/outputs/glances_curses.py
+96
-135
未找到文件。
glances/outputs/glances_curses.py
浏览文件 @
3617fb5d
...
...
@@ -22,7 +22,7 @@
import
re
import
sys
from
glances.compat
import
u
from
glances.compat
import
u
,
iteritems
from
glances.globals
import
OSX
,
WINDOWS
from
glances.logger
import
logger
from
glances.logs
import
glances_logs
...
...
@@ -51,6 +51,45 @@ class _GlancesCurses(object):
Note: It is a private class, use GlancesCursesClient or GlancesCursesBrowser.
"""
# Shortcuts list
# Note: This list is not exhaustive. See the __catch_key method
_switch_shortcuts
=
{
'0'
:
'disable_irix'
,
'1'
:
'percpu'
,
'2'
:
'disable_left_sidebar'
,
'3'
:
'disable_quicklook'
,
'4'
:
'full_quicklook'
,
'5'
:
'disable_top'
,
'/'
:
'process_short_name'
,
'A'
:
'disable_amps'
,
'b'
:
'byte'
,
'B'
:
'diskio_iops'
,
'd'
:
'disable_diskio'
,
'e'
:
'enable_process_extended'
,
'D'
:
'disable_docker'
,
'F'
:
'fs_free_space'
,
'f'
:
'disable_fs'
,
'h'
:
'help_tag'
,
'I'
:
'disable_ip'
,
'l'
:
'disable_log'
,
'M'
:
'reset_minmax_tag'
,
'n'
:
'disable_network'
,
'R'
:
'disable_raid'
,
's'
:
'disable_sensors'
,
'T'
:
'network_sum'
,
'U'
:
'network_cumul'
,
'z'
:
'disable_process'
}
_sort_shortcuts
=
{
'c'
:
'cpu_percent'
,
'i'
:
'io_counters'
,
'm'
:
'memory_percent'
,
'p'
:
'name'
,
't'
:
'cpu_times'
,
'u'
:
'username'
}
def
__init__
(
self
,
config
=
None
,
args
=
None
):
# Init
self
.
config
=
config
...
...
@@ -286,7 +325,61 @@ class _GlancesCurses(object):
# Catch the pressed key
self
.
pressedkey
=
self
.
get_key
(
self
.
term_window
)
# Actions...
# Switch keys actions
for
k
,
a
in
iteritems
(
self
.
_switch_shortcuts
):
if
self
.
pressedkey
==
ord
(
k
):
setattr
(
self
.
args
,
a
,
not
getattr
(
self
.
args
,
a
))
logger
.
debug
(
'Keypressed (
\'
{0}
\'
), set {1} to {2}'
.
format
(
k
,
a
,
getattr
(
self
.
args
,
a
)))
# Sort keys actions
for
k
,
a
in
iteritems
(
self
.
_sort_shortcuts
):
if
self
.
pressedkey
==
ord
(
k
):
glances_processes
.
auto_sort
=
False
glances_processes
.
sort_key
=
a
logger
.
debug
(
'Keypressed (
\'
{0}
\'
), sort processes by {1}'
.
format
(
k
,
a
))
# Same action for folder and fs plugin
self
.
args
.
disable_folder
=
self
.
args
.
disable_fs
# Quicklook action
if
self
.
args
.
full_quicklook
:
self
.
args
.
disable_quicklook
=
False
self
.
args
.
disable_cpu
=
True
self
.
args
.
disable_mem
=
True
self
.
args
.
disable_swap
=
True
else
:
self
.
args
.
disable_quicklook
=
False
self
.
args
.
disable_cpu
=
False
self
.
args
.
disable_mem
=
False
self
.
args
.
disable_swap
=
False
# Top action
if
self
.
args
.
disable_top
:
self
.
args
.
disable_quicklook
=
True
self
.
args
.
disable_cpu
=
True
self
.
args
.
disable_mem
=
True
self
.
args
.
disable_swap
=
True
self
.
args
.
disable_load
=
True
else
:
self
.
args
.
disable_quicklook
=
False
self
.
args
.
disable_cpu
=
False
self
.
args
.
disable_mem
=
False
self
.
args
.
disable_swap
=
False
self
.
args
.
disable_load
=
False
# Extended stats on top process
if
self
.
args
.
enable_process_extended
:
glances_processes
.
enable_extended
()
else
:
glances_processes
.
disable_extended
()
# Disable process action
if
self
.
args
.
disable_process
:
glances_processes
.
disable
()
else
:
glances_processes
.
enable
()
# Others actions...
if
self
.
pressedkey
==
ord
(
'
\x1b
'
)
or
self
.
pressedkey
==
ord
(
'q'
):
# 'ESC'|'q' > Quit
if
return_to_browser
:
...
...
@@ -298,159 +391,27 @@ class _GlancesCurses(object):
elif
self
.
pressedkey
==
10
:
# 'ENTER' > Edit the process filter
self
.
edit_filter
=
not
self
.
edit_filter
elif
self
.
pressedkey
==
ord
(
'0'
):
# '0' > Switch between IRIX and Solaris mode
self
.
args
.
disable_irix
=
not
self
.
args
.
disable_irix
elif
self
.
pressedkey
==
ord
(
'1'
):
# '1' > Switch between CPU and PerCPU information
self
.
args
.
percpu
=
not
self
.
args
.
percpu
elif
self
.
pressedkey
==
ord
(
'2'
):
# '2' > Enable/disable left sidebar
self
.
args
.
disable_left_sidebar
=
not
self
.
args
.
disable_left_sidebar
elif
self
.
pressedkey
==
ord
(
'3'
):
# '3' > Enable/disable quicklook
self
.
args
.
disable_quicklook
=
not
self
.
args
.
disable_quicklook
elif
self
.
pressedkey
==
ord
(
'4'
):
# '4' > Enable/disable all but quick look and load
self
.
args
.
full_quicklook
=
not
self
.
args
.
full_quicklook
if
self
.
args
.
full_quicklook
:
self
.
args
.
disable_quicklook
=
False
self
.
args
.
disable_cpu
=
True
self
.
args
.
disable_mem
=
True
self
.
args
.
disable_swap
=
True
else
:
self
.
args
.
disable_quicklook
=
False
self
.
args
.
disable_cpu
=
False
self
.
args
.
disable_mem
=
False
self
.
args
.
disable_swap
=
False
elif
self
.
pressedkey
==
ord
(
'5'
):
# '5' > Enable/disable top menu
logger
.
info
(
self
.
args
.
disable_top
)
self
.
args
.
disable_top
=
not
self
.
args
.
disable_top
if
self
.
args
.
disable_top
:
self
.
args
.
disable_quicklook
=
True
self
.
args
.
disable_cpu
=
True
self
.
args
.
disable_mem
=
True
self
.
args
.
disable_swap
=
True
self
.
args
.
disable_load
=
True
else
:
self
.
args
.
disable_quicklook
=
False
self
.
args
.
disable_cpu
=
False
self
.
args
.
disable_mem
=
False
self
.
args
.
disable_swap
=
False
self
.
args
.
disable_load
=
False
elif
self
.
pressedkey
==
ord
(
'/'
):
# '/' > Switch between short/long name for processes
self
.
args
.
process_short_name
=
not
self
.
args
.
process_short_name
elif
self
.
pressedkey
==
ord
(
'a'
):
# 'a' > Sort processes automatically and reset to 'cpu_percent'
glances_processes
.
auto_sort
=
True
glances_processes
.
sort_key
=
'cpu_percent'
elif
self
.
pressedkey
==
ord
(
'A'
):
# 'A' > enable/disable AMP module
self
.
args
.
disable_amps
=
not
self
.
args
.
disable_amps
elif
self
.
pressedkey
==
ord
(
'b'
):
# 'b' > Switch between bit/s and Byte/s for network IO
self
.
args
.
byte
=
not
self
.
args
.
byte
elif
self
.
pressedkey
==
ord
(
'B'
):
# 'B' > Switch between bit/s and IO/s for Disk IO
self
.
args
.
diskio_iops
=
not
self
.
args
.
diskio_iops
elif
self
.
pressedkey
==
ord
(
'c'
):
# 'c' > Sort processes by CPU usage
glances_processes
.
auto_sort
=
False
glances_processes
.
sort_key
=
'cpu_percent'
elif
self
.
pressedkey
==
ord
(
'd'
):
# 'd' > Show/hide disk I/O stats
self
.
args
.
disable_diskio
=
not
self
.
args
.
disable_diskio
elif
self
.
pressedkey
==
ord
(
'D'
):
# 'D' > Show/hide Docker stats
self
.
args
.
disable_docker
=
not
self
.
args
.
disable_docker
elif
self
.
pressedkey
==
ord
(
'e'
):
# 'e' > Enable/Disable extended stats for top process
self
.
args
.
enable_process_extended
=
not
self
.
args
.
enable_process_extended
if
not
self
.
args
.
enable_process_extended
:
glances_processes
.
disable_extended
()
else
:
glances_processes
.
enable_extended
()
elif
self
.
pressedkey
==
ord
(
'E'
):
# 'E' > Erase the process filter
logger
.
info
(
"Erase process filter"
)
glances_processes
.
process_filter
=
None
elif
self
.
pressedkey
==
ord
(
'F'
):
# 'F' > Switch between FS available and free space
self
.
args
.
fs_free_space
=
not
self
.
args
.
fs_free_space
elif
self
.
pressedkey
==
ord
(
'f'
):
# 'f' > Show/hide fs / folder stats
self
.
args
.
disable_fs
=
not
self
.
args
.
disable_fs
self
.
args
.
disable_folder
=
not
self
.
args
.
disable_folder
elif
self
.
pressedkey
==
ord
(
'g'
):
# 'g' > History
self
.
history_tag
=
not
self
.
history_tag
elif
self
.
pressedkey
==
ord
(
'h'
):
# 'h' > Show/hide help
self
.
args
.
help_tag
=
not
self
.
args
.
help_tag
elif
self
.
pressedkey
==
ord
(
'i'
):
# 'i' > Sort processes by IO rate (not available on OS X)
glances_processes
.
auto_sort
=
False
glances_processes
.
sort_key
=
'io_counters'
elif
self
.
pressedkey
==
ord
(
'I'
):
# 'I' > Show/hide IP module
self
.
args
.
disable_ip
=
not
self
.
args
.
disable_ip
elif
self
.
pressedkey
==
ord
(
'l'
):
# 'l' > Show/hide log messages
self
.
args
.
disable_log
=
not
self
.
args
.
disable_log
elif
self
.
pressedkey
==
ord
(
'm'
):
# 'm' > Sort processes by MEM usage
glances_processes
.
auto_sort
=
False
glances_processes
.
sort_key
=
'memory_percent'
elif
self
.
pressedkey
==
ord
(
'M'
):
# 'M' > Reset processes summary min/max
self
.
args
.
reset_minmax_tag
=
not
self
.
args
.
reset_minmax_tag
elif
self
.
pressedkey
==
ord
(
'n'
):
# 'n' > Show/hide network stats
self
.
args
.
disable_network
=
not
self
.
args
.
disable_network
elif
self
.
pressedkey
==
ord
(
'p'
):
# 'p' > Sort processes by name
glances_processes
.
auto_sort
=
False
glances_processes
.
sort_key
=
'name'
elif
self
.
pressedkey
==
ord
(
'r'
):
# 'r' > Reset history
self
.
reset_history_tag
=
not
self
.
reset_history_tag
elif
self
.
pressedkey
==
ord
(
'R'
):
# 'R' > Hide RAID plugins
self
.
args
.
disable_raid
=
not
self
.
args
.
disable_raid
elif
self
.
pressedkey
==
ord
(
's'
):
# 's' > Show/hide sensors stats (Linux-only)
self
.
args
.
disable_sensors
=
not
self
.
args
.
disable_sensors
elif
self
.
pressedkey
==
ord
(
't'
):
# 't' > Sort processes by TIME usage
glances_processes
.
auto_sort
=
False
glances_processes
.
sort_key
=
'cpu_times'
elif
self
.
pressedkey
==
ord
(
'T'
):
# 'T' > View network traffic as sum Rx+Tx
self
.
args
.
network_sum
=
not
self
.
args
.
network_sum
elif
self
.
pressedkey
==
ord
(
'u'
):
# 'u' > Sort processes by USER
glances_processes
.
auto_sort
=
False
glances_processes
.
sort_key
=
'username'
elif
self
.
pressedkey
==
ord
(
'U'
):
# 'U' > View cumulative network I/O (instead of bitrate)
self
.
args
.
network_cumul
=
not
self
.
args
.
network_cumul
elif
self
.
pressedkey
==
ord
(
'w'
):
# 'w' > Delete finished warning logs
glances_logs
.
clean
()
elif
self
.
pressedkey
==
ord
(
'x'
):
# 'x' > Delete finished warning and critical logs
glances_logs
.
clean
(
critical
=
True
)
elif
self
.
pressedkey
==
ord
(
'z'
):
# 'z' > Enable/Disable processes stats (count + list + AMPs)
# Enable/Disable display
self
.
args
.
disable_process
=
not
self
.
args
.
disable_process
# Enable/Disable update
if
self
.
args
.
disable_process
:
glances_processes
.
disable
()
else
:
glances_processes
.
enable
()
# Return the key code
return
self
.
pressedkey
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录