一、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. 天地图OGC WMTS服务规则

    图层名称 服务地址 投影类型 矢量底图 http://t0.tianditu.gov.cn/vec_c/wmts?tk=您的密钥 经纬度投影 http://t0.tianditu.gov.cn/vec ...

  2. Installing StackTach

    为StackTach创建database,默认使用MySql,也可以 在settings.py 文件中配置其他的. create stack db mysql -u root -p mysql> ...

  3. php特级课---2、网站大数据如何存储

    php特级课---2.网站大数据如何存储 一.总结 一句话总结: mysql主从,分库分表,mysql分区,mysql集群,Nosql 1.mysql主从服务器各自的功能是什么? 增删改,主服务器 查 ...

  4. python中的数据类型和常用运算符

    一. python中常见的数据类型 1. 整数:任何时候运算都是精确的 2. 浮点数:运算的时候,可能会有四舍五入 3. 字符串:字符串是以单引号'或双引号"括起来的任意文本 1) 同类型的 ...

  5. python里混淆矩阵 左下角为漏报,右上角为误报

    1为黑样本,0为白样本: Counter({1: 105, 0: 95}) check counter!confusion_matrix:[[83 12(预测值为1,实际为0,误报)] [15(预测值 ...

  6. 一张图入门QT设计器

    哈哈哈,这个名字听起来就是骗阅读量的.

  7. Spring mvc服务端消息推送(SSE技术)

    SSE技术是基于单工通信模式,只是单纯的客户端向服务端发送请求,服务端不会主动发送给客户端.服务端采取的策略是抓住这个请求不放,等数据更新的时候才返回给客户端,当客户端接收到消息后,再向服务端发送请求 ...

  8. 不能解决,复选框在request对象获取的信息后显示在用户信息里面为中文的选项名

    因为方框里面value 不用中文?.? 假如用中文呢?  完全可以!!已经试验 如果不用中文,那么中文可以用对象的参数来获得,即在login.jsp中就要用javabean类属性

  9. C++结构体成员列表初始化

    C++关于struct和class的区别,可以看上一篇文章:c ++ class和struct[转] 结构体成员列表初始化,来个例子: #include <iostream> #inclu ...

  10. Scala极速入门

    摘要 当面向对象遇到函数式编程,这就是Scala.简练的语言描述与简单的例子相辅相成,希望能够对大家学习Scala有所帮助. scala 入门 定义 Scala语言是一种面向对象语言,同时又结合了命令 ...