引用
一般linux系统内用这些命令获取系统信息:
<info name="cpuCmd" value="top -b -n 1|grep Cpu"></info>
<info name="memCmd" value="top -b -n 1|grep Mem"></info>
<info name="spaceCmd" value="df -h|sed -n '3,$p'"></info><!-- 需要检查系统df命令,是否'3,$p'第三行开始是磁盘信息 -->
----------------------------------------------
获取单个进程CPU,内存的占用率
cmd脚本命令:top -b -n 1 -p $pid | sed '$d' | sed -n '$p'
上面的$pid,就是进程的PID
/**
* 获取当前进程的CPU占有率
* cmd:top -b -n 1 -p $pid | sed '$d' | sed -n '$p' | awk '{print $9}'
* @Title: getProcCpu
* @Description: TODO
* @author:zjz
* @create-date:2012-7-16 下午6:22:53
* @modify-date:2012-7-16 下午6:22:53
* @param @param pid
* @param @return
* @return double
* @throws
*
*/
public double getProcCpu(int pid){
Process process=null;
BufferedReader br = null;
try {
if("".equals(procCpuShell))return 0;
procCpuShell = procCpuShell.replaceAll("\\$pid", pid+"");
String[] cmd = new String[]{"/bin/sh","-c",procCpuShell};
process = Runtime.getRuntime().exec(cmd);
int resultCode = process.waitFor();
LogCvt.debug("执行结果PID:"+pid+":"+resultCode);
br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
while((line = br.readLine())!=null ){
Double cpu = Double.parseDouble(line);
if(cpu>100)cpu = cpu/10;//刚启动会出现CPU100多情况,则处理除于10
return cpu;
}
} catch (Exception e) {
LogCvt.error("执行获取进程CPU使用率错误",e);
}finally{
try{
if(process!=null)process.destroy();
if(br!=null)br.close();
}catch(Exception e){
LogCvt.error(e.getMessage());
}
}
return 0.0;
}
如果要获取单个进程使用的内存可以这样:
int mb = 1024*1024;
// 可使用内存
long totalMemory = Runtime.getRuntime().totalMemory() / mb;
// 剩余内存
long freeMemory = Runtime.getRuntime().freeMemory() / mb;
// 最大可使用内存
long maxMemory =Runtime.getRuntime().maxMemory() / mb;
分享到:
相关推荐
4. **进程信息**:能够列出系统上的所有进程,获取它们的ID、内存占用、CPU使用率等,有助于管理和优化系统资源的分配。 标签中的“垮平台”特性是Java的一个重要优势,这意味着这个系统信息获取包可以在多种操作...
4. **进程信息**:使用`ProcMem`和`ProcState`对象,可以获取单个进程的内存使用情况和状态,如进程ID、用户名、CPU使用率等。 5. **网络I/O**:`NetDev`类提供网络接口的输入输出字节数、包数和错误统计,而`...
通过Windows的任务管理器或Linux的`top`或`htop`命令,我们可以查看当前运行的进程及其CPU使用率。这有助于我们识别占用CPU资源最多的程序。 2. **恶意软件检查**: 高CPU占用有时可能由病毒、木马或恶意软件引起...
- `ps`:用于报告当前系统中进程的状态,可以查看单个或多个进程的资源使用详情。 - `iostat`:监测磁盘I/O活动,包括读写速度和等待时间。 - `vmstat`:报告虚拟内存、进程、CPU活动等信息。 - `free`:显示...
另外,`/proc/[pid]/stat`文件包含了更详细的统计信息,通过解析这个文件,可以计算出进程的CPU使用率,从而判断其是否无响应。 在Python编程中,可以使用`psutil`库来获取进程信息。`psutil.Process(pid)`对象提供...
1. 定义获取进程性能数据的函数,例如,使用`psutil`库来获取CPU利用率、内存占用、磁盘I/O等信息。 2. 实现监控线程,定期调用上述函数并更新监控结果。 3. 设计报警机制,如当CPU利用率超过预设阈值或者内存低于...
1. **CPU信息**: Sigar提供API来获取系统的CPU使用率,包括系统整体的CPU使用率、用户进程的CPU使用率以及单个CPU核心的使用率。这对于性能监控和优化是非常有用的。 2. **内存管理**:通过Sigar,你可以获取到...
在Linux系统中,`ps`命令可以列出当前系统中的所有进程,而`top`或`htop`提供实时的进程监控,包括CPU使用率、内存占用等信息。 内存管理是操作系统的核心功能之一,主要分为物理内存和虚拟内存。物理内存是指...
4. **资源消耗**:进程监控需要关注CPU使用率、内存占用、磁盘I/O等资源消耗情况。这些指标有助于识别资源瓶颈和性能问题。 5. **异常检测**:监控代码应具备异常检测功能,比如进程崩溃、死锁、内存泄漏等情况。...
通过select()函数,服务器可以在单个线程中处理多个I/O描述符,有效避免了传统多进程模型带来的资源消耗,提升了CPU利用率。 3. **CGI程序** - CGI程序是服务器端执行的程序,用于处理特定的HTTP请求。当请求的...
A-Tune-Collector不仅能够收集基础的硬件和软件信息,还可能涉及更深入的系统状态,如CPU使用率、内存占用、磁盘I/O、网络流量等关键指标。 一、操作系统数据采集 A-Tune-Collector针对不同的操作系统进行数据采集...
在Linux操作系统中,文件操作是日常管理任务的基础。掌握这些操作对于系统管理员或者开发者来说至关重要。本文将深入探讨如何在Linux环境下进行文件操作,解决Tomcat服务失效的问题,以及如何进行文件压缩。以下是对...
- **CPU瓶颈定位**: 使用工具如`top`、`vmstat`等监控CPU使用率,结合进程列表(`ps`)来识别占用CPU较高的进程,并进一步分析这些进程的代码逻辑,优化算法或减少不必要的计算。 - **内存瓶颈定位**: 通过监控内存...
1. **IO多路复用**:IO多路复用是一种通过单个线程处理多个套接字的技术,如Java中的Selector和SelectionKey,可以监控多个通道的状态,提高系统资源利用率。 2. **零拷贝**:零拷贝是指在数据传输过程中避免了数据...
- **CPU监控**:通过`/proc/cpuinfo`文件了解CPU核心数,以及`mpstat`或`top`命令查看CPU使用率。 - **内存监控**:使用`free`命令检查内存使用情况,包括物理内存、交换内存等。 - **磁盘监控**:通过`df`命令查看...
- **CPU和内存分析**:跟踪和分析应用程序的CPU使用率和内存消耗。 - **线程分析**:监控线程的状态和活动,帮助诊断死锁等问题。 - **自定义指标**:支持用户自定义性能指标。 ##### 1.6 PROTOCOL BUFFER - ...
- `sleep()`可以让线程暂停一段时间,期间线程会放弃CPU使用权。 - `yield()`仅让出CPU给同优先级的线程。 **如何停止一个正在运行的线程** - 使用`interrupt()`方法打断线程。 - 在线程中检测中断标志。 **Java...
3. **系统属性**:`java.lang.Runtime`和`java.lang.management`包提供了获取系统属性和资源信息的方法,如CPU使用率、内存信息等。测试应确保这些信息的获取准确无误。 二、模拟操作系统行为 由于直接与操作系统...
1. **性能指标**:包括CPU使用率、内存占用、线程状态、网络I/O等。这些可以通过内置的JMX(Java Management Extensions)接口获取,或者使用第三方工具如JConsole、VisualVM或Prometheus + Grafana等进行可视化展示...
操作系统是计算机科学中的核心组成部分,它是管理和控制计算机硬件与软件资源的软件,旨在提供一个用户友好的界面,方便用户高效地使用计算机。操作系统分为两大类:系统软件和应用软件。系统软件是为所有用户设计的...