在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

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...