用java取得linux系统cpu、内存的实时信息(参考别人代码)
2008-04-20 16:10
615 查看
/**
* cat /proc/cpuinfo - cpu (i.e. vendor, mhz, flags like mmx)
* cat /proc/interrupts - 中断
* cat /proc/ioports - 设备io端口
* cat /proc/meminfo - 内存信息(i.e. mem used, free, swap size)
* cat /proc/partitions - 所有设备的所有分区
* cat /proc/pci - pci设备的信息
* cat /proc/swaps - 所有swap分区的信息
* cat /proc/version - linux的版本号 相当于 uname -r
*/
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
/**
* 取得linux系统下的cpu、内存信息
*
* <p>@author javer QQ:84831612</p>
* @date 2005
*/
public final class LinuxSystemTool
{
/**
* get memory by used info
*
* @return int[] result
* result.length==4;int[0]=MemTotal;int[1]=MemFree;int[2]=SwapTotal;int[3]=SwapFree;
* @throws IOException
* @throws InterruptedException
*/
public static int[] getMemInfo() throws IOException, InterruptedException
{
File file = new File("/proc/meminfo");
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(file)));
int[] result = new int[4];
String str = null;
StringTokenizer token = null;
while((str = br.readLine()) != null)
{
token = new StringTokenizer(str);
if(!token.hasMoreTokens())
continue;
str = token.nextToken();
if(!token.hasMoreTokens())
continue;
if(str.equalsIgnoreCase("MemTotal:"))
result[0] = Integer.parseInt(token.nextToken());
else if(str.equalsIgnoreCase("MemFree:"))
result[1] = Integer.parseInt(token.nextToken());
else if(str.equalsIgnoreCase("SwapTotal:"))
result[2] = Integer.parseInt(token.nextToken());
else if(str.equalsIgnoreCase("SwapFree:"))
result[3] = Integer.parseInt(token.nextToken());
}
return result;
}
/**
* get memory by used info
*
* @return float efficiency
* @throws IOException
* @throws InterruptedException
*/
public static float getCpuInfo() throws IOException, InterruptedException
{
File file = new File("/proc/stat");
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(file)));
StringTokenizer token = new StringTokenizer(br.readLine());
token.nextToken();
int user1 = Integer.parseInt(token.nextToken());
int nice1 = Integer.parseInt(token.nextToken());
int sys1 = Integer.parseInt(token.nextToken());
int idle1 = Integer.parseInt(token.nextToken());
Thread.sleep(1000);
br = new BufferedReader(
new InputStreamReader(new FileInputStream(file)));
token = new StringTokenizer(br.readLine());
token.nextToken();
int user2 = Integer.parseInt(token.nextToken());
int nice2 = Integer.parseInt(token.nextToken());
int sys2 = Integer.parseInt(token.nextToken());
int idle2 = Integer.parseInt(token.nextToken());
return (float)((user2 + sys2 + nice2) - (user1 + sys1 + nice1)) / (float)((user2 + nice2 + sys2 + idle2) - (user1 + nice1 + sys1 + idle1));
}
}
/**
* 测试类
*
* <p>@author javer QQ:84831612</p>
* @date 2005
*/
public class JaverTest
{
public static void main(String[] args) throws Exception
{
int[] memInfo = LinuxSystemTool.getMemInfo();
System.out.println("MemTotal:" + memInfo[0]);
System.out.println("MemFree:" + memInfo[1]);
System.out.println("SwapTotal:" + memInfo[2]);
System.out.println("SwapFree:" + memInfo[3]);
System.out.println("CPU利用率:" + LinuxSystemTool.getCpuInfo());
}
}
* cat /proc/cpuinfo - cpu (i.e. vendor, mhz, flags like mmx)
* cat /proc/interrupts - 中断
* cat /proc/ioports - 设备io端口
* cat /proc/meminfo - 内存信息(i.e. mem used, free, swap size)
* cat /proc/partitions - 所有设备的所有分区
* cat /proc/pci - pci设备的信息
* cat /proc/swaps - 所有swap分区的信息
* cat /proc/version - linux的版本号 相当于 uname -r
*/
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
/**
* 取得linux系统下的cpu、内存信息
*
* <p>@author javer QQ:84831612</p>
* @date 2005
*/
public final class LinuxSystemTool
{
/**
* get memory by used info
*
* @return int[] result
* result.length==4;int[0]=MemTotal;int[1]=MemFree;int[2]=SwapTotal;int[3]=SwapFree;
* @throws IOException
* @throws InterruptedException
*/
public static int[] getMemInfo() throws IOException, InterruptedException
{
File file = new File("/proc/meminfo");
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(file)));
int[] result = new int[4];
String str = null;
StringTokenizer token = null;
while((str = br.readLine()) != null)
{
token = new StringTokenizer(str);
if(!token.hasMoreTokens())
continue;
str = token.nextToken();
if(!token.hasMoreTokens())
continue;
if(str.equalsIgnoreCase("MemTotal:"))
result[0] = Integer.parseInt(token.nextToken());
else if(str.equalsIgnoreCase("MemFree:"))
result[1] = Integer.parseInt(token.nextToken());
else if(str.equalsIgnoreCase("SwapTotal:"))
result[2] = Integer.parseInt(token.nextToken());
else if(str.equalsIgnoreCase("SwapFree:"))
result[3] = Integer.parseInt(token.nextToken());
}
return result;
}
/**
* get memory by used info
*
* @return float efficiency
* @throws IOException
* @throws InterruptedException
*/
public static float getCpuInfo() throws IOException, InterruptedException
{
File file = new File("/proc/stat");
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(file)));
StringTokenizer token = new StringTokenizer(br.readLine());
token.nextToken();
int user1 = Integer.parseInt(token.nextToken());
int nice1 = Integer.parseInt(token.nextToken());
int sys1 = Integer.parseInt(token.nextToken());
int idle1 = Integer.parseInt(token.nextToken());
Thread.sleep(1000);
br = new BufferedReader(
new InputStreamReader(new FileInputStream(file)));
token = new StringTokenizer(br.readLine());
token.nextToken();
int user2 = Integer.parseInt(token.nextToken());
int nice2 = Integer.parseInt(token.nextToken());
int sys2 = Integer.parseInt(token.nextToken());
int idle2 = Integer.parseInt(token.nextToken());
return (float)((user2 + sys2 + nice2) - (user1 + sys1 + nice1)) / (float)((user2 + nice2 + sys2 + idle2) - (user1 + nice1 + sys1 + idle1));
}
}
/**
* 测试类
*
* <p>@author javer QQ:84831612</p>
* @date 2005
*/
public class JaverTest
{
public static void main(String[] args) throws Exception
{
int[] memInfo = LinuxSystemTool.getMemInfo();
System.out.println("MemTotal:" + memInfo[0]);
System.out.println("MemFree:" + memInfo[1]);
System.out.println("SwapTotal:" + memInfo[2]);
System.out.println("SwapFree:" + memInfo[3]);
System.out.println("CPU利用率:" + LinuxSystemTool.getCpuInfo());
}
}
相关文章推荐
- 用java取得linux系统cpu、内存的实时信息
- 用java取得linux系统cpu、内存的实时信息
- 用java取得linux系统cpu、内存的实时信息
- 用java取得linux系统cpu、内存的实时信息
- 用java取得linux系统cpu、内存的实时信息
- 用java取得linux系统cpu、内存的实时信息
- [转]java取得Linuxcpu,内存,磁盘实时信息
- java取得Linuxcpu,内存,磁盘实时信息
- java取得Linuxcpu,内存,磁盘实时信息
- 方法:Linux 下用JAVA获取CPU、内存、磁盘的系统资源信息
- java对Linux系统的CPU利用率的计算和内存信息的获取
- Java获取系统信息(cpu,内存,硬盘,进程等)的相关方法 .
- php不能获取linux CPU、内存等实时信息解决方法
- 使用python获取CPU和内存信息的思路与实现(linux系统)
- linux查询内存、CPU、硬盘等系统信息的命令
- 【Java】【系统状态】获取系统信息(包括操作系统、jvm、cpu、内存、硬盘、网络、io等)
- Java如何获取系统信息(包括操作系统、jvm、cpu、内存、硬盘、网络、io等)
- Java 连接远程Linux 服务器执行 shell 脚本查看 CPU、内存、硬盘信息
- Linux系统监控命令个人总结之jstack查找高度占用CPU的java代码
- ps 查看linux系统内存及cpu信息