欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

获取Linux系统cpu使用率,获取linux系统cpu,package com.

来源: javaer 分享于  点击 19640 次 点评:228

获取Linux系统cpu使用率,获取linux系统cpu,package com.


package com.ppstream.ugc.imgftp.util;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.StringTokenizer;import org.apache.commons.io.FileSystemUtils;public class OSUtils {    /**     * 功能:可用磁盘     * */    public static int disk() {        try {            long total = FileSystemUtils.freeSpaceKb("/home");            double disk = (double) total / 1024 / 1024;            return (int) disk;        } catch (IOException e) {            e.printStackTrace();        }        return 0;    }    /**     * 功能:获取Linux系统cpu使用率     * */    public static int cpuUsage() {        try {            Map<?, ?> map1 = OSUtils.cpuinfo();            Thread.sleep(5 * 1000);            Map<?, ?> map2 = OSUtils.cpuinfo();            long user1 = Long.parseLong(map1.get("user").toString());            long nice1 = Long.parseLong(map1.get("nice").toString());            long system1 = Long.parseLong(map1.get("system").toString());            long idle1 = Long.parseLong(map1.get("idle").toString());            long user2 = Long.parseLong(map2.get("user").toString());            long nice2 = Long.parseLong(map2.get("nice").toString());            long system2 = Long.parseLong(map2.get("system").toString());            long idle2 = Long.parseLong(map2.get("idle").toString());            long total1 = user1 + system1 + nice1;            long total2 = user2 + system2 + nice2;            float total = total2 - total1;            long totalIdle1 = user1 + nice1 + system1 + idle1;            long totalIdle2 = user2 + nice2 + system2 + idle2;            float totalidle = totalIdle2 - totalIdle1;            float cpusage = (total / totalidle) * 100;            return (int) cpusage;        } catch (InterruptedException e) {            e.printStackTrace();        }        return 0;    }    /**     * 功能:CPU使用信息     * */    public static Map<?, ?> cpuinfo() {        InputStreamReader inputs = null;        BufferedReader buffer = null;        Map<String, Object> map = new HashMap<String, Object>();        try {            inputs = new InputStreamReader(new FileInputStream("/proc/stat"));            buffer = new BufferedReader(inputs);            String line = "";            while (true) {                line = buffer.readLine();                if (line == null) {                    break;                }                if (line.startsWith("cpu")) {                    StringTokenizer tokenizer = new StringTokenizer(line);                    List<String> temp = new ArrayList<String>();                    while (tokenizer.hasMoreElements()) {                        String value = tokenizer.nextToken();                        temp.add(value);                    }                    map.put("user", temp.get(1));                    map.put("nice", temp.get(2));                    map.put("system", temp.get(3));                    map.put("idle", temp.get(4));                    map.put("iowait", temp.get(5));                    map.put("irq", temp.get(6));                    map.put("softirq", temp.get(7));                    map.put("stealstolen", temp.get(8));                    break;                }            }        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                buffer.close();                inputs.close();            } catch (Exception e2) {                e2.printStackTrace();            }        }        return map;    }    /**     * 功能:内存使用率     * */    public static int memoryUsage() {        Map<String, Object> map = new HashMap<String, Object>();        InputStreamReader inputs = null;        BufferedReader buffer = null;        try {            inputs = new InputStreamReader(new FileInputStream("/proc/meminfo"));            buffer = new BufferedReader(inputs);            String line = "";            while (true) {                line = buffer.readLine();                if (line == null)                    break;                int beginIndex = 0;                int endIndex = line.indexOf(":");                if (endIndex != -1) {                    String key = line.substring(beginIndex, endIndex);                    beginIndex = endIndex + 1;                    endIndex = line.length();                    String memory = line.substring(beginIndex, endIndex);                    String value = memory.replace("kB", "").trim();                    map.put(key, value);                }            }            long memTotal = Long.parseLong(map.get("MemTotal").toString());            long memFree = Long.parseLong(map.get("MemFree").toString());            long memused = memTotal - memFree;            long buffers = Long.parseLong(map.get("Buffers").toString());            long cached = Long.parseLong(map.get("Cached").toString());            double usage = (double) (memused - buffers - cached) / memTotal * 100;            return (int) usage;        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                buffer.close();                inputs.close();            } catch (Exception e2) {                e2.printStackTrace();            }        }        return 0;    }}//该片段来自于http://byrx.net
相关栏目:

用户点评