java调用linux top命令的方法,以及遇到的一个问题
2011-08-26 14:11
651 查看
最近在做一个系统的Tuning工作,由于要跑几个小时,
所以准确地记录系统运行过程中的各个性能是需要完成的一个工作,
所以花了两个小时解决了这个问题,写上博客作为备忘。
Java的Runtime类提供了一种接受jvm虚拟机环境,并且运行命令的方法,具体代码如下
Runtime rt = Runtime.getRuntime
try{
Process p = rt.exec("top -b -n 1");
}catch(exception e){}
上述命令完成了使用java程序调用top -b -n 1命令的方法。
并且利用
BufferedReader in = null;
in = new BufferedReader(new InputStreamReader(p.getInputStream()));
可以获得p程序的输出。
借此通过周期性的调用上述方法(例如1s1次)就可以获得关心程序的cpu占用程度以及内存占用程度了。
在记录上述程序结果的时候,我发现Date得到的结果并不是本时区的,
于是利用了Calendar类的设置时区方法得到本地时间。
其核心思路就是用Calendar类设置一个时区,然后将Calendar类传递给Date类。
TimeZone timeZoneShanghai = TimeZone.getTimeZone("Asia/Shanghai");
Calendar cal = Calendar.getInstance();
cal.setTimeZone(timeZoneShanghai);
Date date = cal.getTime();
这样,关于利用java调用top命令并且将关心结果输出的问题基本解决。
所以准确地记录系统运行过程中的各个性能是需要完成的一个工作,
所以花了两个小时解决了这个问题,写上博客作为备忘。
Java的Runtime类提供了一种接受jvm虚拟机环境,并且运行命令的方法,具体代码如下
Runtime rt = Runtime.getRuntime
try{
Process p = rt.exec("top -b -n 1");
}catch(exception e){}
上述命令完成了使用java程序调用top -b -n 1命令的方法。
并且利用
BufferedReader in = null;
in = new BufferedReader(new InputStreamReader(p.getInputStream()));
可以获得p程序的输出。
借此通过周期性的调用上述方法(例如1s1次)就可以获得关心程序的cpu占用程度以及内存占用程度了。
在记录上述程序结果的时候,我发现Date得到的结果并不是本时区的,
于是利用了Calendar类的设置时区方法得到本地时间。
其核心思路就是用Calendar类设置一个时区,然后将Calendar类传递给Date类。
TimeZone timeZoneShanghai = TimeZone.getTimeZone("Asia/Shanghai");
Calendar cal = Calendar.getInstance();
cal.setTimeZone(timeZoneShanghai);
Date date = cal.getTime();
这样,关于利用java调用top命令并且将关心结果输出的问题基本解决。
相关文章推荐
- java调用windows/Linux/Unix 命令行执行命令的方法--调用ImageMagick的合并图形的命令
- java方法重写的时候,一个调用父类还是子类方法的问题
- socket iOS 与java 后台进行socket通讯遇到的问题以及解决方法
- java本地调用cmd,shell命令,远程调用Linux执行命令方法总结
- java调用linux命令传递参数问题
- socket iOS 与java 后台进行socket通讯遇到的问题以及解决方法
- PHP调用Linux命令权限不足问题解决方法
- Java 调用 FFMPEG 命令时用 url 作为输入源,Linux 下出现 “no such file or directory” 问题的解决
- socket iOS 与java 后台进行socket通讯遇到的问题以及解决方法
- java本地调用cmd,shell命令,远程调用Linux执行命令方法总结
- PHP5 在调用 JAVA WebService 时遇到的各种问题及解决方法(一)
- socket iOS 与java 后台进行socket通讯遇到的问题以及解决方法
- 一个java程序/项目检测工具.方法是否被调用以及频率
- java调用linux命令 传递多个参数和通配符的问题
- Linux环境下Java调用MATLAB遇到问题
- Cocos2dx编译到android遇到的一个坑爹问题以及解决方法
- 2013-5-25 1. “已有打开的与此命令相关联的 DataReader,必须首先将它关闭。"问题. 上周在项目开发中,遇到这样的一个问题,在前台展示页,两个WebPart调用后台的AP
- Java 调用 FFMPEG 命令时用 url 作为输入源,Linux 下出现 “no such file or directory” 问题的解决
- socket iOS 与java 后台进行socket通讯遇到的问题以及解决方法
- linux下,matplotlib遇到的相关问题以及解决方法