一、uptime命令

  uptime命令可以查看系统的运行时间和负载

终端输入uptime

04:03:58 up 10 days, 13:19, 1 user, load average: 0.54, 0.40, 0.20
  • 当前时间 04:03:58
  • 系统已运行的时间 10 days, 13:19
  • 当前在线用户 1 user
  • 平均负载:0.54, 0.40, 0.20,最近1分钟、5分钟、15分钟系统的负载

显然这样查出的数据是不能展示给用户来看的,下面上更友好的显示运行时间的代码

二、UptimeUtil

package com.starfast.web.util;

import java.io.InputStreamReader;
import java.io.LineNumberReader; /**
* 获取设备运行时间
*
* @author DUCHONG
* @since 2018-06-28 14:28
**/
public class UptimeUtil { /**
* 获取linux命令执行的结果,cat 之类
* @param cmd
* @return
*/
public static 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) { System.err.println("IOException " + e.getMessage()); }
return result;
} /**
* 返回运行时间的秒
* @return
*/
public static 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 static 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
*/
public static String getRouterUptime(){
return getUptimeSecond(getCmdResult("uptime"));
} public static void main(String[] args) { String s1="14:08:51 up 3 days, 1:04, 2 users, load average: 0.00, 0.00, 0.00";
String s5=" 18:09:13 up 1 day, 1:43, 4 users, load average: 0.51, 0.48, 0.31";
String s2="14:13:34 up 5:06, 4 users, load average: 0.00, 0.01, 0.05";
String s3="16:41:19 up 8 min, 2 users, load average: 0.56, 0.39, 0.17";
String s4="18:03:32 up 1:30, 3 users, load average: 0.06, 0.09, 0.11"; System.out.println(getUptimeSecond(s5));
}
}

三、cat  /proc/uptime

/**
* 返回运行时间的秒-更精确
* @return
*/
public static String getUptimeSecond2(String str){
String result="0"; if(StringUtils.isNotEmpty(str)) {
if (str.contains(" ")) {
String[] re = str.split(" "); if (re.length > 0) {
String first = re[0];
if (first.contains(".")) {
result = first.substring(0, first.indexOf("."));
}
else {
result = first;
}
}
}
else{
if (str.contains(".")) {
result = str.substring(0, str.indexOf("."));
}
else {
result = str;
}
}
}
return result;
} /**
* 获取系统运行时间-更精确
* @return
*/
public static String getRouterUptime2(){
return getUptimeSecond2(getCmdResult("cat /proc/uptime"));
}

  

java获取Linux持续运行时间及友好显示的更多相关文章

  1. Java 获取Linux 的IP地址

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  2. Java获取Linux和Window系统CPU、内存和磁盘总使用率的情况

    这是一个工具类,获取的内容: CPU使用率:得到的是当前CPU的使用情况,这是算出的是两次500毫秒时间差的CPU使用率 内存使用率:[1 -  剩余的物理内存/(总的物理内存+虚拟内存) ] * 1 ...

  3. Java获取Linux系统cpu使用率

    原文:http://www.open-open.com/code/view/1426152165201 import java.io.BufferedReader; import java.io.Fi ...

  4. Java获取Linux上指定文件夹下所有第一级子文件夹

    说明:需要只获得第一级文件夹目录 package com.sunsheen.jfids.studio.monitor.utils; import java.io.BufferedReader; imp ...

  5. Java:java获取Linux下的路径

    指定Linux的路径 //Linux系统路径 StringBuilder sb = new StringBuilder(File.separator); String Url = sb.append( ...

  6. 获取Linux系统运行时间

    uptime |sed 's/^.*up//' |sed 's/users.*//g'|awk '{for(i=1;i<NF;++i) printf $i "\t";prin ...

  7. 方法:Linux 下用JAVA获取CPU、内存、磁盘的系统资源信息

    CPU使用率: InputStream is = null; InputStreamReader isr = null; BufferedReader brStat = null; StringTok ...

  8. linux下的shell命令的编写,以及java怎样调用linux的shell命令(java怎样获取linux上的网卡的ip信息)

    程序猿都非常懒,你懂的! 近期在开发中,须要用到server的ip和mac信息.可是server是架设在linux系统上的,对于多网口,在获取ip时就产生了非常大的问题.以下是在windows系统上, ...

  9. JAVA如何利用Swiger获取Linux系统电脑配置相关信息

    最近开发java应用程序,涉及到获取Linux服务器相关配置的问题,特地网上搜寻了下,采用Swiger包可以直接获取,再次小结一下,以便于以后能方便使用,也便于其他童鞋们学习. 推荐大家参考链接:ht ...

随机推荐

  1. Windows 安装Mysql8.0 绿色包

    〇.准备: MySQL8.0 Windows zip包下载地址:https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.11-winx64.zip 环 ...

  2. Python快速学习-高级特性

    1.切片 取一个list或tuple的部分元素是非常常见的操作 L = ['hello','the','world','and','my','love'] 取前三个元素 L[0:3],L[:3] 取倒 ...

  3. v2.0 组件通信的总结

    在vue.js现在比较流行,层出不穷的js框架越来越强调数据绑定,组件化开发. 正在给公司做一个管理后台,基本思路是编写几个通用组件,采用单页面应用的形式完成: 结构大致如下: mainVue lef ...

  4. 简述redux(1)

    简述redux(1) 概念: 是一个有用的架构,应用场景一般为:多交互.多数据源.如: 某个组件的状态需要共享 某个状态需要在任何地方可以看到 一个组件需要改变全局状态. 一个组件需要改变另一个组件的 ...

  5. python中set类型总结

    set的创建无非有两种方式: 一 直接使用{}创建新的set并初始化 例如: set1 = {1,2,3,"good news",(1,2,3)} #声明的时候可以包含元组,但不能 ...

  6. 阿里的druid

    Druid首先是一个数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser. Druid支持所有JDBC兼容的数据库,包括 ...

  7. java学习笔记--常用类

    一.Math类:针对数学运算进行操作的类 1.常用的方法 A:绝对值   public static int abs(int a) B:向上取整  public static double ceil( ...

  8. HDU - 5126 stars (CDQ分治)

    题目链接 题目大意:一共有Q(1<=Q<=50000)组操作,操作分为两种: 1.在x,y,z处添加一颗星星 2.询问以(x1,y1,z1)与(x2,y2,z2)为左上和右下顶点的矩形之间 ...

  9. python与mongodb

    一.mongodb的原理介绍: 特点: 为了理解以上特点,我们从一个真实的场景出发,介绍mongodb的原理:参考视频:https://www.youtube.com/watch?v=4SxHNmk5 ...

  10. dbca 快速健建库

    [oracle@e0946877f272 ~]$ dbca -silent -createDatabase -templateName $ORACLE_HOME/assistants/dbca/tem ...