您的位置:首页 > 运维架构 > Linux

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命令并且将关心结果输出的问题基本解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐