在Linux(CentOS)的Python中获取负载或getloadavg()在较短的时间内获取负载

前端之家收集整理的这篇文章主要介绍了在Linux(CentOS)的Python中获取负载或getloadavg()在较短的时间内获取负载前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

目前,我正在使用Python的os.getloadavg()来了解服务器上的当前负载(Centos 6.3)

根据python文档,os.getloadavg()“返回在过去的1,5和15分钟内平均的系统运行队列中的进程数”:

http://docs.python.org/2/library/os.html#os.getloadavg

os.getloadavg()
Return the number of processes in the system run queue averaged over the last 1,5,and 15 minutes or raises OSError if the load average was unobtainable.

题:

>是否可以获取系统运行队列中的进程数
在当前的瞬间?
>如果没有,是否有可能在较短的时间内获得平均值
时间,像过去5或10秒?

我问的原因是因为我得到了平均负载,然后如果它太高,就会杀死一些进程.这可能每分钟发生多次,因此我担心在1分钟平均值赶上之前会有太多进程被杀死.

谢谢!

最佳答案
根据Linux 3.5内核源代码中的Documentation/filesystems/proc.txt,您可以从/ proc / stat检索当前正在运行的进程数:

>>> for l in open("/proc/stat"):
...   l = l.split()
...   if l[0] == 'procs_running':
...     result = int(l[1])
... 
>>> print result
6
>>> 

/ proc / loadavg中提供了相同的编号:

>>> print int(open("/proc/loadavg").next().split()[3].split('/')[0])
6

猜你在找的Python相关文章