最近公司的一个移植项目有个任务,要测量我们的程序在Linux下运行一段时间(约几个小时),看看CPU的占用的情况如何。我的同事(老高)用bash脚本完成了任务。我闲来无事,也顺手用ruby写了一个。
在Linux下取得进程的相关信息,可以使用ps命令。我们可以通过ruby来定时调用ps命令,取得一段时间内的某进程的CPU占用率。 “ps -A” 可以列出所有进程。先看看ps的输出结果:
PID TTY TIME CMD
1 ? 00:00:02 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
4 ? 00:00:00 ksoftirqd/0
5 ? 00:00:00 watchdog/0
6 ? 00:00:00 events/0
7 ? 00:00:00 khelper
8 ? 00:00:00 kstop/0
9 ? 00:00:00 kintegrityd/0
10 ? 00:00:00 kblockd/0
11 ? 00:00:00 kacpid
...... (略)
如何取得CPU占用率,可以用 pcpu这个选项。如:“ps -o pcpu -p 11” ,数字11 指的是进程id。我们只要找到目标进程id
的话,就可以用ps这个命令来得到CPU占用率了。
通过分析"ps -A"的输出,我们根据进程的名称(在这个case下,我们要测量的
程序只运行一个实例,所以不存在重名的进程),可以得到目标进程的id。然后进一步就可以得到进程的CPU占用率了,然后把结果以追加的方式重定向到一个
文件中。
ruby的代码如下(代码太短啦,就不解释了):
#! /usr/bin/ruby
proc_id = 0
%x(ps -A).each_line do |line|
larray = line.split(' ')
if(larray[3].downcase =='xxxx') # xxxx is your app's name
proc_id = larray[0]
break
end
end
while true
system "ps -o pcpu -p #{proc_id} >> pcpu.txt"
sleep(3)
end
分享到:
相关推荐
使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库使用ruby解析awdb离线库...
Eye在这一点上也有所加强,不仅能够监控进程状态,还能监控进程的资源使用情况,帮助开发者优化应用性能。同时,Eye的配置语法更加直观,使得日常的维护工作变得更加便捷。 在实际使用中,Eye提供了多种操作方式,...
5. **资源限制**:可以为每个进程设置资源限制,如内存和CPU使用率,防止进程占用过多系统资源。 6. **日志管理**:Bluepill可以收集和管理被监控进程的输出,便于故障排查和日志分析。 7. **事件驱动**:基于事件...
Ruby是一种强大的、面向对象的脚本语言,尤其适合Web开发,如使用Rails框架。在Ubuntu操作系统上安装Ruby,可以让你利用其丰富的库和工具来构建高效的应用程序。本指南将详细讲解如何在Ubuntu系统上安装Ruby 2.1.5这...
获取进程内存 您是否需要获取进程的内存使用情况? 很棒,因为该库可以做到这一点。安装在您的Gemfile添加gem 'get_process_mem' 然后运行$ bundle install 。 如果您使用的是Windows,则还需要拥有sys-proctable ...
在Ubuntu 16.x上,可以使用apt安装Nginx,然后创建一个反向代理配置,将请求转发到Puma或其他Rails服务器进程。此外,还需要配置SSL证书以实现HTTPS安全连接,特别是在处理敏感数据时。 数据库是Rails应用不可或缺...
Ruby语言在进行进程管理时,提供了多种方法,其中之一就是`POSIX::Spawn`。这个库是Ruby的一个扩展,它提供了一种高效的方式来创建新的进程,尤其是对于Unix-like系统(包括Linux和Mac OS X)。`POSIX::Spawn`库的...
如果要让进程在后台运行,可以使用`&`符号,例如`ruby myapp.rb &`。然而,这种方法并不完美,因为一旦终端关闭,后台进程也会随之结束。为了解决这个问题,我们需要利用Unix/Linux的守护进程(daemon)机制。 Ruby...
在我如何使用github搭建个人网站中有介绍如何安装使用
例如,你可以创建一个进程组,让所有进程共享相同的环境变量和资源,或者使用`Grouper`来管理一组子进程,统一控制它们的启动、停止和监控。 总的来说,`childprocess`库为Ruby开发者提供了一种强大且跨平台的方式...
### Ubuntu 下 Ruby on Rails 的安装与配置 #### 一、Ruby on Rails 的安装步骤 **1.1 系统环境准备** 确保您的 Ubuntu 系统已更新至最新状态。这一步很重要,因为新版本通常会修复旧版本中存在的问题,包括安全...
Ruby统计 描述: Ruby Stats 可帮助您在需要时获取系统统计信息。 我们在内部使用它来监控我们的服务器并将其发送到我们在云中的监控服务器。 这个 Gem 目前支持 Ubuntu 和 Mac。 不幸的是,我们没有计划为 Windows...
在Ruby中使用QTGui工具包,开发者可以利用Ruby的简洁语法和动态特性,同时享受到QT提供的强大GUI设计能力。通过qtbindings,Ruby程序员可以直接调用QT的类和方法,创建复杂的窗口应用、控件、布局和信号与槽机制,而...
在本篇【保姆级教程】中,我们将详细探讨如何在Ubuntu系统上安装Ruby on Rails环境。首先,确保你已经下载了Ubuntu桌面版,这可以从官方链接(https://cn.ubuntu.com/download)获取。Ruby on Rails是流行的开源Web...
- **Linux 系统中如何限制用户进程 CPU 占用率**:使用 `cpulimit -l 50 -p <pid>` 限制指定进程的 CPU 占用率不超过 50%。 #### 网络配置 - **配置 ADSL**:使用 `pppoeconf` 或 `wicd` 工具配置 ADSL 连接。 - *...
在Ruby中处理文本数据时,还会遇到多行字符串的情况。如果使用`和`EOF`来定义字符串,所有在它们之间的内容都会被视为字符串的一部分,包括换行符。这种定义方式对定义大量文本非常有用。 ```ruby str = 这是多行...
Ruby Ruby Ruby Ruby Ruby Ruby
在使用前需先配置 Ruby On Rails 的开发环境,本文将介绍如何在 Ubuntu 12.04 系统下配置 Ruby On Rails 开发环境。 一、安装系统需要的包 在安装 Ruby On Rails 之前,需要安装一些必要的包,包括 build-...
使用Ruby和GitHub API构建Action的快速入门配方