加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 01:46:37 所属栏目:Linux 来源:网络整理
导读:目前,我正在使用 Python的os.getloadavg()来了解服务器上的当前负载(Centos 6.3) 根据python文档,os.getloadavg()“返回在过去的1,5和15分钟内平均的系统运行队列中的进程数”: http://docs.python.org/2/library/os.html#os.getloadavg os.getloadavg()Ret
目前,我正在使用 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读