Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
蜕变的菜鸟
glances
提交
24d6dd71
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,体验更适合开发者的 AI 搜索 >>
提交
24d6dd71
编写于
9月 21, 2012
作者:
N
Nicolas Hennion
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
New function: Get process stats
上级
fbd87077
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
73 addition
and
69 deletion
+73
-69
glances/glances.py
glances/glances.py
+73
-69
未找到文件。
glances/glances.py
浏览文件 @
24d6dd71
...
...
@@ -255,7 +255,7 @@ class glancesLogs:
# Add Top process sort depending on alert type
if
(
item_type
.
startswith
(
"MEM"
)):
# MEM
sortby
=
'mem_percent'
sortby
=
'mem
ory
_percent'
else
:
# CPU* and LOAD
sortby
=
'cpu_percent'
...
...
@@ -412,6 +412,57 @@ class glancesStats:
else
:
self
.
host
[
'os_version'
]
=
""
def
__get_process_statsNEW__
(
self
,
proc
):
"""
Get process (proc) statistics
!!! Waiting PATCH for PsUtil
!!! http://code.google.com/p/psutil/issues/detail?id=329
!!! Performance ?
"""
procstat
=
proc
.
as_dict
([
'memory_info'
,
'cpu_percent'
,
'memory_percent'
,
'io_counters'
,
'pid'
,
'username'
,
'nice'
,
'cpu_times'
,
'name'
,
'status'
,
'cmdline'
])
procstat
[
'status'
]
=
str
(
procstat
[
'status'
])[:
1
].
upper
()
procstat
[
'cmdline'
]
=
" "
.
join
(
procstat
[
'cmdline'
])
return
procstat
def
__get_process_stats__
(
self
,
proc
):
"""
Get process (proc) statistics
"""
procstat
=
{}
procstat
[
'memory_info'
]
=
proc
.
get_memory_info
()
if
psutil_get_cpu_percent_tag
:
procstat
[
'cpu_percent'
]
=
\
proc
.
get_cpu_percent
(
interval
=
0
)
procstat
[
'memory_percent'
]
=
proc
.
get_memory_percent
()
if
psutil_get_io_counter_tag
:
procstat
[
'io_counters'
]
=
proc
.
get_io_counters
()
procstat
[
'pid'
]
=
proc
.
pid
procstat
[
'username'
]
=
proc
.
username
try
:
# Deprecated in PsUtil 0.5.0
procstat
[
'nice'
]
=
proc
.
nice
except
:
# Specific for PsUtil 0.5.0+
procstat
[
'nice'
]
=
proc
.
get_nice
()
procstat
[
'status'
]
=
str
(
proc
.
status
)[:
1
].
upper
()
procstat
[
'cpu_times'
]
=
proc
.
get_cpu_times
()
procstat
[
'name'
]
=
proc
.
name
procstat
[
'cmdline'
]
=
" "
.
join
(
proc
.
cmdline
)
return
procstat
def
__update__
(
self
):
"""
...
...
@@ -726,57 +777,10 @@ class glancesStats:
self
.
processcount
[
'total'
]
+=
1
# Per process stats
try
:
procstat
=
{}
procstat
[
'proc_size'
]
=
proc
.
get_memory_info
().
vms
procstat
[
'proc_resident'
]
=
proc
.
get_memory_info
().
rss
if
psutil_get_cpu_percent_tag
:
procstat
[
'cpu_percent'
]
=
\
proc
.
get_cpu_percent
(
interval
=
0
)
procstat
[
'mem_percent'
]
=
proc
.
get_memory_percent
()
if
psutil_get_io_counter_tag
:
self
.
proc_io
=
proc
.
get_io_counters
()
procstat
[
'read_bytes'
]
=
self
.
proc_io
.
read_bytes
procstat
[
'write_bytes'
]
=
self
.
proc_io
.
write_bytes
#~ try:
#~ self.procstatbkp
#~ except Exception:
#~ self.procstatbkp = []
#~ try:
#~ self.procstatbkp[str(proc.pid)]
#~ except Exception:
#~ self.procstatbkp[str(proc.pid)] = []
#~ try:
#~ self.procstatbkp[str(proc.pid)]['read_bytes_old']
#~ self.procstatbkp[str(proc.pid)]['write_bytes_old']
#~ except Exception:
#~ self.procstatbkp[str(proc.pid)]['read_bytes_old'] = procstat['read_bytes']
#~ self.procstatbkp[str(proc.pid)]['write_bytes_old'] = procstat['write_bytes']
#~ procstat['read_bytes_ps'] = procstat['read_bytes'] - self.procstatbkp[str(proc.pid)]['read_bytes_old']
#~ procstat['write_bytes_ps'] = procstat['write_bytes'] - self.procstatbkp[str(proc.pid)]['write_bytes_old']
#~ self.procstatbkp[str(proc.pid)]['read_bytes_old'] = procstat['read_bytes']
#~ self.procstatbkp[str(proc.pid)]['write_bytes_old'] = procstat['write_bytes']
procstat
[
'pid'
]
=
proc
.
pid
procstat
[
'uid'
]
=
proc
.
username
try
:
# Deprecated in PsUtil 0.5.0
procstat
[
'nice'
]
=
proc
.
nice
except
:
# Specific for PsUtil 0.5.0+
procstat
[
'nice'
]
=
proc
.
get_nice
()
procstat
[
'status'
]
=
str
(
proc
.
status
)[:
1
].
upper
()
procstat
[
'proc_time'
]
=
proc
.
get_cpu_times
()
procstat
[
'proc_name'
]
=
proc
.
name
procstat
[
'proc_cmdline'
]
=
" "
.
join
(
proc
.
cmdline
)
self
.
process
.
append
(
procstat
)
self
.
process
.
append
(
self
.
__get_process_stats__
(
proc
))
except
Exception
:
pass
# If it is the first grab then empty process list
if
self
.
process_first_grab
:
self
.
process
=
[]
...
...
@@ -849,7 +853,7 @@ class glancesStats:
if
psutil_get_cpu_percent_tag
:
sortedby
=
'cpu_percent'
else
:
sortedby
=
'mem_percent'
sortedby
=
'mem
ory
_percent'
# Auto selection
# If global MEM > 70% sort by MEM usage
# else sort by CPU usage
...
...
@@ -860,8 +864,8 @@ class glancesStats:
pass
else
:
if
memtotal
>
limits
.
getSTDWarning
():
sortedby
=
'mem_percent'
elif
sortedby
==
'
proc_
name'
:
sortedby
=
'mem
ory
_percent'
elif
sortedby
==
'name'
:
sortedReverse
=
False
return
sorted
(
self
.
process
,
key
=
lambda
process
:
process
[
sortedby
],
...
...
@@ -1163,13 +1167,13 @@ class glancesScreen:
self
.
log_tag
=
not
self
.
log_tag
elif
self
.
pressedkey
==
109
:
# 'm' > Sort processes by MEM usage
self
.
setProcessSortedBy
(
'mem_percent'
)
self
.
setProcessSortedBy
(
'mem
ory
_percent'
)
elif
self
.
pressedkey
==
110
and
psutil_network_io_tag
:
# 'n' > Show/hide network stats
self
.
network_tag
=
not
self
.
network_tag
elif
self
.
pressedkey
==
112
:
# 'p' > Sort processes by name
self
.
setProcessSortedBy
(
'
proc_
name'
)
self
.
setProcessSortedBy
(
'name'
)
# Return the key code
return
self
.
pressedkey
...
...
@@ -1610,7 +1614,7 @@ class glancesScreen:
# Add top process
if
(
log
[
logcount
][
9
]
!=
[]):
logmsg
+=
" - Top process: {0}"
.
format
(
log
[
logcount
][
9
][
0
][
'
proc_
name'
])
log
[
logcount
][
9
][
0
][
'name'
])
# Display the log
self
.
term_window
.
addnstr
(
self
.
log_y
+
1
+
logcount
,
self
.
log_x
,
logmsg
,
len
(
logmsg
))
...
...
@@ -1699,7 +1703,7 @@ class glancesScreen:
self
.
term_window
.
addnstr
(
self
.
process_y
+
2
,
process_x
+
21
,
_
(
"MEM%"
),
5
,
curses
.
A_UNDERLINE
if
self
.
getProcessSortedBy
()
==
'mem_percent'
else
0
)
if
self
.
getProcessSortedBy
()
==
'mem
ory
_percent'
else
0
)
process_name_x
=
28
# If screen space (X) is available then:
# PID
...
...
@@ -1746,7 +1750,7 @@ class glancesScreen:
self
.
term_window
.
addnstr
(
self
.
process_y
+
2
,
process_x
+
process_name_x
,
_
(
"NAME"
),
12
,
curses
.
A_UNDERLINE
if
self
.
getProcessSortedBy
()
==
'
proc_
name'
else
0
)
if
self
.
getProcessSortedBy
()
==
'name'
else
0
)
# If there is no data to display...
if
not
processlist
:
...
...
@@ -1759,12 +1763,12 @@ class glancesScreen:
len
(
processlist
))
for
processes
in
range
(
0
,
proc_num
):
# VMS
process_size
=
processlist
[
processes
][
'
proc_size'
]
process_size
=
processlist
[
processes
][
'
memory_info'
].
vms
self
.
term_window
.
addnstr
(
self
.
process_y
+
3
+
processes
,
process_x
,
self
.
__autoUnit
(
process_size
),
5
)
# RSS
process_resident
=
processlist
[
processes
][
'
proc_resident'
]
process_resident
=
processlist
[
processes
][
'
memory_info'
].
rss
self
.
term_window
.
addnstr
(
self
.
process_y
+
3
+
processes
,
process_x
+
7
,
self
.
__autoUnit
(
process_resident
),
5
)
...
...
@@ -1779,11 +1783,11 @@ class glancesScreen:
self
.
term_window
.
addnstr
(
self
.
process_y
+
3
+
processes
,
process_x
,
"N/A"
,
8
)
# MEM%
mem
_percent
=
processlist
[
processes
][
'mem
_percent'
]
mem
ory_percent
=
processlist
[
processes
][
'memory
_percent'
]
self
.
term_window
.
addnstr
(
self
.
process_y
+
3
+
processes
,
process_x
+
21
,
"{0:.1f}"
.
format
(
mem_percent
),
5
,
self
.
__getProcessColor
(
mem_percent
))
"{0:.1f}"
.
format
(
mem
ory
_percent
),
5
,
self
.
__getProcessColor
(
mem
ory
_percent
))
# If screen space (X) is available then:
# PID
if
tag_pid
:
...
...
@@ -1793,7 +1797,7 @@ class glancesScreen:
str
(
pid
),
6
)
# UID
if
tag_uid
:
uid
=
processlist
[
processes
][
'u
id
'
]
uid
=
processlist
[
processes
][
'u
sername
'
]
self
.
term_window
.
addnstr
(
self
.
process_y
+
3
+
processes
,
process_x
+
35
,
str
(
uid
),
8
)
...
...
@@ -1811,7 +1815,7 @@ class glancesScreen:
str
(
status
),
1
)
# TIME+
if
tag_proc_time
:
process_time
=
processlist
[
processes
][
'
proc_time
'
]
process_time
=
processlist
[
processes
][
'
cpu_times
'
]
dtime
=
timedelta
(
seconds
=
sum
(
process_time
))
dtime
=
"{0}:{1}.{2}"
.
format
(
str
(
dtime
.
seconds
//
60
%
60
).
zfill
(
2
),
...
...
@@ -1824,19 +1828,19 @@ class glancesScreen:
if
tag_io
:
# Processes are only refresh every 2 refresh_time
#~ elapsed_time = max(1, self.__refresh_time) * 2
io_read
=
processlist
[
processes
][
'
read_bytes'
]
io_read
=
processlist
[
processes
][
'
io_counters'
].
read_bytes
self
.
term_window
.
addnstr
(
self
.
process_y
+
3
+
processes
,
process_x
+
62
,
self
.
__autoUnit
(
io_read
),
8
)
io_write
=
processlist
[
processes
][
'
write_bytes'
]
io_write
=
processlist
[
processes
][
'
io_counters'
].
write_bytes
self
.
term_window
.
addnstr
(
self
.
process_y
+
3
+
processes
,
process_x
+
72
,
self
.
__autoUnit
(
io_write
),
8
)
# display process command line
max_process_name
=
screen_x
-
process_x
-
process_name_x
process_name
=
processlist
[
processes
][
'
proc_
name'
]
process_cmdline
=
processlist
[
processes
][
'
proc_
cmdline'
]
process_name
=
processlist
[
processes
][
'name'
]
process_cmdline
=
processlist
[
processes
][
'cmdline'
]
if
(
len
(
process_cmdline
)
>
max_process_name
or
len
(
process_cmdline
)
==
0
):
command
=
process_name
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录