java获取Linux持续运行时间及友好显示
一、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持续运行时间及友好显示的更多相关文章
- Java 获取Linux 的IP地址
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...
- Java获取Linux和Window系统CPU、内存和磁盘总使用率的情况
这是一个工具类,获取的内容: CPU使用率:得到的是当前CPU的使用情况,这是算出的是两次500毫秒时间差的CPU使用率 内存使用率:[1 - 剩余的物理内存/(总的物理内存+虚拟内存) ] * 1 ...
- Java获取Linux系统cpu使用率
原文:http://www.open-open.com/code/view/1426152165201 import java.io.BufferedReader; import java.io.Fi ...
- Java获取Linux上指定文件夹下所有第一级子文件夹
说明:需要只获得第一级文件夹目录 package com.sunsheen.jfids.studio.monitor.utils; import java.io.BufferedReader; imp ...
- Java:java获取Linux下的路径
指定Linux的路径 //Linux系统路径 StringBuilder sb = new StringBuilder(File.separator); String Url = sb.append( ...
- 获取Linux系统运行时间
uptime |sed 's/^.*up//' |sed 's/users.*//g'|awk '{for(i=1;i<NF;++i) printf $i "\t";prin ...
- 方法:Linux 下用JAVA获取CPU、内存、磁盘的系统资源信息
CPU使用率: InputStream is = null; InputStreamReader isr = null; BufferedReader brStat = null; StringTok ...
- linux下的shell命令的编写,以及java怎样调用linux的shell命令(java怎样获取linux上的网卡的ip信息)
程序猿都非常懒,你懂的! 近期在开发中,须要用到server的ip和mac信息.可是server是架设在linux系统上的,对于多网口,在获取ip时就产生了非常大的问题.以下是在windows系统上, ...
- JAVA如何利用Swiger获取Linux系统电脑配置相关信息
最近开发java应用程序,涉及到获取Linux服务器相关配置的问题,特地网上搜寻了下,采用Swiger包可以直接获取,再次小结一下,以便于以后能方便使用,也便于其他童鞋们学习. 推荐大家参考链接:ht ...
随机推荐
- ASP.NET上传文件,已经上传的大小保存在session中,在另一个页面中读取session的值不行
想自己做个ASP.NET上传文件时显示进度条的, 按照自己的想法,其实也就是显示每次已经上传的字节,从网上找到一个方法是能够把文件变成流以后再慢慢写入的,我在那个循环写入的时候每循环一次都把已经上传的 ...
- 自动化收集SQLSERVER诊断信息
自动化收集SQLSERVER诊断信息 相信很多人都遇到过当SQLSERVER出现问题的时候,而你又解决不了需要DBA或者微软售后支持工程师 去帮忙解决问题,那么他们一般需要你收集一些系统信息和SQ ...
- ural 2016 Magic and Science
2016. Magic and Science Time limit: 1.0 secondMemory limit: 64 MB Scientists who specialize in witch ...
- Redis 简单介绍(知识整理笔记)
前言: Redis 介绍:轻量级.Key-Value.内存数据库.支持持久化 Redis 数据结构:string(字符串),hash(哈希),list(列表),set(集合)及 zset (sorte ...
- vue 全选与取消全选
所用知识点 1 v-model:监听input内容 2 watch:监听属性方法 参考https://cn.vuejs.org/v2/api/#watch 3 页面初始化调用函数 mounted 一: ...
- 使用smart-npm和npm安装完毕之后发现 不是内部命令和外部命令!
我明明记得加入过path环境变量.我想一定是什么原因 一查bing.com然后发现没有在全局环境 .所以 只需要过npm install -g gulp 一句执行cmd这样就好 $ gulp提示gu ...
- opencv中VideoCapture和cvCapture有什么区别?
VideoCapture和cvCapture其实是一样的,你可以去看看源码,VideoCapture其实在内部调用了cvCapture.这是不同 版本的opencv导致的.我接触到的opencv有过一 ...
- WordPress 中文图片 上传 自动重命名
由于国人很少有在上传图片前将图片名重命名为英语的,所以自动重命名对于WP来说尤为重要,特别是LINUX的不支持中文名的. WordPress上传多媒体的代码都存放于\wp-admin\includes ...
- linux下使用fstat来计算文件的大小
#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include <fcntl.h ...
- MQTT协议通俗讲解
参考 Reference v3.1.1 英文原版 中文翻译版 其他资源 网站 MQTT官方主页 Eclipse Paho 项目主页 测试工具 MQTT Spy(基于JDK) Chrome插件 MQTT ...