使用java获取linux系统cpu、内存的实时信息
2024年03月05日
导入java.io.BufferedReader;导入java.io.File;
导入java.io.FileInputStream;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.util.StringTokenizer;
/**
*获取linux系统下的cpu、内存信息
*
*<p> author javer QQ:84831612</p>
* date 2005
*/
public Final class LinuxSystemTool
{
/**
*通过使用信息获取内存
*
* return int[]结果
*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[]结果=新int[4];
字符串str=null;
StringTokenizer令牌=null;
while((str=br.readLine())!=null)
{
token=new StringTokenizer(str);
if(!token.hasMoreTokens())
继续;
str=token.nextToken();
if(!token.hasMoreTokens())
继续;
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 float效率
* 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());
intidle1=Integer.parseInt(token.nextToken());
线程睡眠(1000);
br=new BufferedReader(
new InputStreamReader(new FileInputStream(file)));
令牌=new StringTokenizer(br.readLine());
token.nextToken();
int user2=Integer.parseInt(token.nextToken());
int Nice2=Integer.parseInt(token.nextToken());
int sys2=Integer.parseInt(token.nextToken());
intidle2=Integer.parseInt(token.nextToken());
返回(浮点)((用户2+系统2+Nice2)-(用户1+系统1+Nice1))/(浮点)((用户2+Nice2+系统2+空闲2)-(用户1+Nice1+系统1+空闲1));
}}
/
**
*测试类
*
*<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("交换总额:"+memInfo[2]);
System.out.println("交换空间:"+memInfo[3]);
System.out.println("CPU利用率:"+LinuxSystemTool.getCpuInfo());
}
}