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 ...
随机推荐
- STL视频_00
[05:40]比赛规则 - Part01[06:33]比赛规则 - Part02[07:28]比赛规则 - Part03[08:45]提出的问题 - 1和2[09:23]提出的问题 - 3和4 *** ...
- Launch an instance from a volume
从image boot,并且attach一个no-bootable volume: $ nova boot --flavor --image -af91-43d8-b5e6-a4506aa8f369 ...
- python中常见的日期换算
time模块提供各种操作时间的函数 说明:一般有两种表示时间的方式: 第一种是时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的 第二种 ...
- MDX中Filter 与Exist的区别
获得一个集合,这个一般用来筛选出一个自定义的set,比如在中国的餐厅 该set返回所有MSDNteam下并且在Fact Thread度量上有记录的products 用Exists实现 sele ...
- SSIS的控制流之Foreach循环容器和序列容器
上一篇介绍了For循环容器的使用.本篇将介绍Foreach循环容器和序列容器的使用. Foreach循环容器 Foreach循环容器定义包中的控制流.其循环的实现类似于编程语言中的Foreach循环结 ...
- java:RandomAccessFile随机读取文件内容
RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了.这些记录的大小不必相同:但是其大小和位置必须是可知的.但是该类仅限于操作文件. ...
- C++(十一)— map的插入、查找、删除
标准库map类型是一种以键-值(key-value)存储的数据类型. map是STL的一个关联容器.它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值 ...
- 用createinstallmedia创建可恢复的OSX安装DMG
准备 从App Store下载OS X安装程序,下载完成,会在应用程序目录 /Applications 下找到类似 Install OS X 10.xxxxxx.app(中文名如:安装 OS X 10 ...
- count(*) 和count(1) 有区别吗
create table test1 (a varchar2(2),b varchar2(2)); insert into test1 values ('b','c'); insert into te ...
- 常用服务搭建(nfs/ftp/samba)
一. NFS1. NFS简介NFS全称是network file systemNFS允许一个系统在网络上与他人共享目录和文件.通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件. 假 ...