• Java获取Linux系统cpu使用率


    原文:http://www.open-open.com/code/view/1426152165201

    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;
        }
    }
  • 相关阅读:
    在Struts2中使用ValueStack、ActionContext、ServletContext、request、session等 .
    Struts2 Action的访问路径
    Struts2 中的数据传输
    Struts2中的类型转换
    应用:ValueStack
    ValueStack基础:OGNL
    Struts2中的ModelDriven机制及其运用
    form表单中method的get和post区别
    el表达式跟ognl表达式的区别(转)
    Java ServletContext 详解
  • 原文地址:https://www.cnblogs.com/shihaiming/p/7048264.html
Copyright © 2020-2023  润新知