JAVA 处理 Centos 7.5 系统相关参数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JAVA 处理 Centos 7.5 系统相关参数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5613字,纯文字阅读大概需要9分钟。
内容图文
package com.sbsr.netty.tools;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import com.sbsr.netty.constants.ServerConstant;
import com.sbsr.netty.model.ClientMachineInfo;
import com.sbsr.netty.tools.shell.OutMessage;
import com.sbsr.netty.tools.shell.ShellExecutor;
public class ToolBusiness {
/**
* 获取客户端节点 硬件信息 及 使用信息
*
* @throws IOException
*
*/
public static ClientMachineInfo getClientMachineInfo() throws IOException {
String cmd = ServerConstant.SHELL_PROP.get("checkclientInfo_shell_url");
OutMessage outMessage = ShellExecutor.exeLocalShell(cmd);
ClientMachineInfo cmi = new ClientMachineInfo();
if (outMessage.getRet() == 0) {
String retStr = outMessage.getOutStr();
BufferedReader in = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(retStr.getBytes())));
String str = "";
List<String> list = new ArrayList<String>();
try {
int i = 1;
while ((str = in.readLine()) != null) {
// 操作系统类型
if (i == 1) {
sysInfoHandle(str, cmi);
}
// 磁盘IO读写速率
if (i == 3) {
diskHandle(str, cmi);
}
// CPU 型号
if (i == 5) {
cpuTypeHandle(str, cmi);
}
// 任务信息
if (i == 7) {
taskInfoHandle(str, cmi);
}
// CPU信息
if (i == 8) {
cpuInfoHandle(str, cmi);
}
// 内存信息
if (i == 9) {
memInfoHandle(str, cmi);
}
// 磁盘使用信息
if (i > 11) {
list.add(str);
}
i++;
}
} catch (IOException e) {
e.printStackTrace();
}
// 磁盘使用信息处理
diskUsedHandle(list, cmi);
}
return cmi;
}
// 操作系统类型
private static void sysInfoHandle(String str, ClientMachineInfo cmi) {
String[] arr = str.split("\\s+");
cmi.setOs(arr[0]);
}
// 磁盘IO读写速率
private static void diskHandle(String str, ClientMachineInfo cmi) {
String[] arr = str.split("\\s+");
// cmi.setDiskRead(arr[2] + " kb/s");
// cmi.setDiskWrite(arr[3] + " kb/s");
cmi.setDiskRead(arr[2]);
cmi.setDiskWrite(arr[3]);
}
// CPU型号
private static void cpuTypeHandle(String str, ClientMachineInfo cmi) {
String[] arr = str.split(ServerConstant.SPLIT_COLON);
cmi.setCpuType(arr[1].trim());
}
// 任务信息处理
private static void taskInfoHandle(String str, ClientMachineInfo cmi) {
String[] arr = null;
String[] childArr = null;
arr = str.substring("Tasks:".length(), str.length()).split(ServerConstant.SPLIT_COMMA);
for (String s : arr) {
childArr = s.trim().split(ServerConstant.SPLIT_SPACE);
if ("total".toUpperCase().equals(childArr[1].toUpperCase())) {
cmi.setTaskTotal(Integer.parseInt(childArr[0]));
if (Integer.parseInt(childArr[0]) > cmi.getTaskMax()) {
cmi.setTaskMax(Integer.parseInt(childArr[0]));
}
if (0 == cmi.getTaskMin() || Integer.parseInt(childArr[0]) < cmi.getTaskMin()) {
cmi.setTaskMin(Integer.parseInt(childArr[0]));
}
}
}
}
// Cpu信息处理
private static void cpuInfoHandle(String str, ClientMachineInfo cmi) {
String[] arr = str.substring("%Cpu(s):".length(), str.length()).split(ServerConstant.SPLIT_COMMA);
String[] childArr = null;
for (String s : arr) {
childArr = s.trim().split(ServerConstant.SPLIT_SPACE);
if ("id".toUpperCase().equals(childArr[1].toUpperCase())) {
cmi.setCpuRate((float) (Math.round((100 - Float.parseFloat(childArr[0])) * 100)) / 100 + "%");
}
}
}
// 内存信息处理
private static void memInfoHandle(String str, ClientMachineInfo cmi) {
String[] arr = str.substring("KiB Mem :".length(), str.length()).split(ServerConstant.SPLIT_COMMA);
String[] childArr = null;
float total = 0;
float used = 0;
for (String s : arr) {
childArr = s.trim().split(ServerConstant.SPLIT_SPACE);
if ("total".toUpperCase().equals(childArr[1].toUpperCase())) {
total = Integer.parseInt(childArr[0].trim().substring(0, childArr[0].trim().length() - 1));
float t = total * 10 / (1000 * 1000);
cmi.setRam(String.format("%.0f", t) + " G");
} else if ("used".toUpperCase().equals(childArr[1].toUpperCase())) {
used = Integer.parseInt(childArr[0].trim().substring(0, childArr[0].trim().length() - 1));
float t = 100 * used / total;
cmi.setRamRate(String.format("%.01f", t) + ServerConstant.SPLIT_PERCENT);
}
}
}
// 磁盘使用信息处理
private static void diskUsedHandle(List<String> list, ClientMachineInfo cmi) {
int total = 0;
float usedisk = 0;
String dw = "";
for (int j = 0; j < list.size(); j++) {
String str = list.get(j);
if (!(str.indexOf("tmpfs") > -1 || str.indexOf("devtmpfs") > -1)) {
String[] arr = str.split("\\s+");
total += Float.parseFloat(arr[1].substring(0, arr[1].length() - 1));
dw = arr[2].substring(arr[2].length() - 1, arr[2].length());
if (dw.equals("M") || dw.equals("m")) {
usedisk += Float.parseFloat(arr[2].substring(0, arr[2].length() - 1)) / 1000;
} else {
if (ToolValid.isNotEmpty(arr[2].substring(0, arr[2].length() - 1))) {
usedisk += Float.parseFloat(arr[2].substring(0, arr[2].length() - 1));
}
}
}
}
cmi.setDisk(total + " G");
cmi.setUseDisk(String.format("%.0f", 100 * usedisk / total) + ServerConstant.SPLIT_PERCENT);
}
}
对应脚本待续。。。
package com.sbsr.netty.model;
import java.io.Serializable;
import lombok.Data;
@Data
public class ClientMachineInfo implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
/**
* 客户端 硬件信息
*/
private String os; // 操作系统
private String cpuType; // cpu型号
private String ram; // 内存容量
private String disk; // 硬盘容量
/**
* 客户端 使用信息
*/
private String cpuRate; // cpu使用率
private String ramRate; // 内存使用率
private String useDisk; // 硬盘使用率
private int taskTotal; // 进程总数
private int taskMin; // 最小进程数
private int taskMax; // 最大进程数
private String inSite; // 入栈速度
private String outSite; // 出栈速度
private String diskRead; // 硬盘读速度
private String diskWrite; // 硬盘写速度
private String flow;// 流量
}
看得见的等候 发布了65 篇原创文章 · 获赞 21 · 访问量 9万+ 私信 关注
内容总结
以上是互联网集市为您收集整理的JAVA 处理 Centos 7.5 系统相关参数全部内容,希望文章能够帮你解决JAVA 处理 Centos 7.5 系统相关参数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。