分享

java查询Linux系统已经运行的时间

 樱花梦_张艺馨 2020-05-08

//=====================================查询系统已经运行的 时间  的实现================

/**

     * 获取linux命令执行的结果,cat 之类

     * @param cmd

     * @return

     */

    public  String getCmdResult(String cmd) {

        String result = "";

        try {

            Process process = Runtime.getRuntime().exec(cmd);

            InputStreamReader ir = new InputStreamReader(process.getInputStream());

            LineNumberReader input = new LineNumberReader(ir);

            String line;

            while ((line = input.readLine()) != null){

                result=line;

            }

        }

        catch (java.io.IOException e) {

        log.info("==============<getCmdResult-error>=============="+e);

            System.err.println("IOException " + e.getMessage());

        }

        return result;

    }

    /**

     * 返回运行时间:天数+小时

     * @return

     */

    public  String getUptime(String str){

        String time=null;

        if(str.contains(",")){

            String [] strArr=str.split(",");

            if(strArr.length>2){

                int hms=0;

                String day="";

                int hours=0;

                if(str.contains("days")){

                    //截取到天

                    day=strArr[0].substring(strArr[0].indexOf("up")+2,strArr[0].indexOf("days")).trim();

                    //时分秒的秒数

                    hms=Integer.parseInt(getHms(strArr[1].replace("min","").trim()));

                    //将秒数转换成小时数

                    hours  = (hms % ( 60 * 60 * 24)) / (60 * 60);

                }else if(str.contains("day")){

                    //截取到天

                    day=strArr[0].substring(strArr[0].indexOf("up")+2,strArr[0].indexOf("day")).trim();

                    //时分秒的秒数

                    hms=Integer.parseInt(getHms(strArr[1].replace("min","").trim()));

                    //将秒数转换成小时数

                    hours  = (hms % ( 60 * 60 * 24)) / (60 * 60);

                }else{

                    String hmsStr=strArr[0].substring(strArr[0].indexOf("up")+2);

                    hms=Integer.parseInt(getHms(hmsStr.replace("min","").trim()));

                    //将秒数转换成小时数

                    hours  = (hms % ( 60 * 60 * 24)) / (60 * 60);

                }

                time= day+","+hours;

                log.info("==============<getUptime-consoleSearch>==============time:"+time);

            }

        }

        return time;

    }

    /**

     * 返回运行时间的秒数

     * @return

     */

    public String getUptimeSecond(String str){

        String time=null;

        if(str.contains(",")){

            String [] strArr=str.split(",");

            if(strArr.length>2){

                int hms=0;

                int days=0;

                if(str.contains("days")){

                    //截取到天

                    String day=strArr[0].substring(strArr[0].indexOf("up")+2,strArr[0].indexOf("days")).trim();

                    //天的秒数

                    days=Integer.parseInt(day) * 24 * 3600;

                    //时分秒的秒数

                    hms=Integer.parseInt(getHms(strArr[1].replace("min","").trim()));

                }else if(str.contains("day")){

                    //截取到天

                    String day=strArr[0].substring(strArr[0].indexOf("up")+2,strArr[0].indexOf("day")).trim();

                    //天的秒数

                    days=Integer.parseInt(day) * 24 * 3600;

                    //时分秒的秒数

                    hms=Integer.parseInt(getHms(strArr[1].replace("min","").trim()));

                }else{

                    String hmsStr=strArr[0].substring(strArr[0].indexOf("up")+2);

                    hms=Integer.parseInt(getHms(hmsStr.replace("min","").trim()));

                }

                Integer totalTime=days+hms;

                time=totalTime.toString();

            }

        }

        return time;

    }

    /**

     * 获取中间字段的秒数

     * @param str

     * @return

     */

    public  String getHms(String str){

        String result=null;

        Integer hms=0;

        if(str.contains(":")){

            String [] hmsArr=str.split("\\:");

            int length=hmsArr.length;

            switch (length){

                //只有秒

                case 1:hms+=Integer.parseInt(hmsArr[0]);

                    break;

                //时分

                case 2:hms+=(Integer.parseInt(hmsArr[0]) * 3600 + Integer.parseInt(hmsArr[1]) *60);

                    break;

                //时分秒

                case 3:hms+=(Integer.parseInt(hmsArr[0]) * 3600 + Integer.parseInt(hmsArr[1]) *60 +Integer.parseInt(hmsArr[2]));

                    break;

            }

        }

        else{

            //不包含: 只能是分

            hms+=Integer.parseInt(str) * 60;

        }

        if(hms>0){

            result=hms.toString();

        }

        return result;

    }

    /**

     * 获取运行时间

     * @return

     */

    @Override

    public  String getRouterUptime(){

        return getUptime(getCmdResult("uptime"));

    }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约