package com.djjs;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Map;
import java.util.Properties;
import java.util.Timer;
import java.util.TimerTask;
import org.hyperic.sigar.CpuInfo;
import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.Mem;
import org.hyperic.sigar.OperatingSystem;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
import org.hyperic.sigar.Swap;
import org.hyperic.sigar.Who;
/**
* 使用sigar来监控,简单方便!
* 使用说明:以下代码需要配合sigar的dll文件来用,需要将dll文件放到JDK下的bin文件夹下,供sigar程序调用,还需要sigarjar包。
* @author nxd
*/
public class RuntimeTest {
public static void main(String[] args) {
try {
Timer timer = new Timer();// 定时器
TimerTask task = new TimerTask() {
public void run() {
try {
memory();
property();
cpu();
os();
who();
System.out.println("====================================================");
} catch (Exception e) {
e.printStackTrace();
}
}
};
try {
timer.schedule(task, 0, 3000);// 每3秒取一次
} catch (Exception ex) {
ex.printStackTrace();
}
// System信息,从jvm获取
// property();//根据自己的需求,都可以放到定时器中定时获取
// cpu信息
// cpu();
// 内存信息
// memory();
// 操作系统信息
// os();
// 用户信息
// who();
} catch (Exception e1) {
e1.printStackTrace();
}
}
private static void property() throws UnknownHostException {
Runtime r = Runtime.getRuntime();
Properties props = System.getProperties();
InetAddress addr;
addr = InetAddress.getLocalHost();
String ip = addr.getHostAddress();
Map<String, String> map = System.getenv();
String userName = map.get("USERNAME");// 获取用户名
String computerName = map.get("COMPUTERNAME");// 获取计算机名
String userDomain = map.get("USERDOMAIN");// 获取计算机域名
System.out.println("用户名: " + userName);
System.out.println("计算机名: " + computerName);
System.out.println("计算机域名: " + userDomain);
System.out.println("本地ip地址: " + ip);
System.out.println("本地主机名: " + addr.getHostName());
System.out.println("JVM可以使用的总内存: " + r.totalMemory());
System.out.println("JVM可以使用的剩余内存: " + r.freeMemory());
System.out.println("JVM可以使用的处理器个数: " + r.availableProcessors());
System.out.println("Java的运行环境版本: " + props.getProperty("java.version"));
System.out.println("Java的运行环境供应商: " + props.getProperty("java.vendor"));
System.out.println("Java供应商的URL: " + props.getProperty("java.vendor.url"));
System.out.println("Java的安装路径: " + props.getProperty("java.home"));
System.out.println("Java的虚拟机规范版本: " + props.getProperty("java.vm.specification.version"));
System.out.println("Java的虚拟机规范供应商: " + props.getProperty("java.vm.specification.vendor"));
System.out.println("Java的虚拟机规范名称: " + props.getProperty("java.vm.specification.name"));
System.out.println("Java的虚拟机实现版本: " + props.getProperty("java.vm.version"));
System.out.println("Java的虚拟机实现供应商: " + props.getProperty("java.vm.vendor"));
System.out.println("Java的虚拟机实现名称: " + props.getProperty("java.vm.name"));
System.out.println("Java运行时环境规范版本: " + props.getProperty("java.specification.version"));
System.out.println("Java运行时环境规范供应商: " + props.getProperty("java.specification.vender"));
System.out.println("Java运行时环境规范名称: " + props.getProperty("java.specification.name"));
System.out.println("Java的类格式版本号: " + props.getProperty("java.class.version"));
System.out.println("Java的类路径: " + props.getProperty("java.class.path"));
System.out.println("加载库时搜索的路径列表: " + props.getProperty("java.library.path"));
System.out.println("默认的临时文件路径: " + props.getProperty("java.io.tmpdir"));
System.out.println("一个或多个扩展目录的路径: " + props.getProperty("java.ext.dirs"));
System.out.println("操作系统的名称: " + props.getProperty("os.name"));
System.out.println("操作系统的构架: " + props.getProperty("os.arch"));
System.out.println("操作系统的版本: " + props.getProperty("os.version"));
System.out.println("文件分隔符: " + props.getProperty("file.separator"));
System.out.println("路径分隔符: " + props.getProperty("path.separator"));
System.out.println("行分隔符: " + props.getProperty("line.separator"));
System.out.println("用户的账户名称: " + props.getProperty("user.name"));
System.out.println("用户的主目录: " + props.getProperty("user.home"));
System.out.println("用户的当前工作目录: " + props.getProperty("user.dir"));
}
private static void memory() throws SigarException {
Sigar sigar = new Sigar();
Mem mem = sigar.getMem();
float total = mem.getTotal();
float used = mem.getUsed();
// 内存总量
System.out.println("内存总量: " + mem.getTotal() / 1024L / 1024L + "M av");
// 当前内存使用量
System.out.println("当前内存使用量: " + mem.getUsed() / 1024L / 1024L + "M used");
// 当前内存剩余量
System.out.println("当前内存剩余量: " + mem.getFree() / 1024L / 1024L + "M free");
// 当前内存使用率
System.out.println("内存使用率: " + used / total * 100 + "%");
Swap swap = sigar.getSwap();
// 交换区总量
System.out.println("交换区总量: " + swap.getTotal() / 1024L / 1024L + "M av");
// 当前交换区使用量
System.out.println("当前交换区使用量: " + swap.getUsed() / 1024L / 1024L + "M used");
// 当前交换区剩余量
System.out.println("当前交换区剩余量: " + swap.getFree() / 1024L / 1024L + "M free");
}
private static void cpu() throws SigarException {
Sigar sigar = new Sigar();
CpuInfo infos[] = sigar.getCpuInfoList();
CpuPerc cpuList[] = null;
cpuList = sigar.getCpuPercList();
for (int i = 0; i < infos.length; i++) {// 不管是单块CPU还是多CPU都适用
CpuInfo info = infos[i];
System.out.println("第" + (i + 1) + "块CPU信息");
System.out.println("CPU的总量MHz: " + info.getMhz());// CPU的总量MHz
System.out.println("CPU生产商: " + info.getVendor());// 获得CPU的卖主,如:Intel
System.out.println("CPU类别: " + info.getModel());// 获得CPU的类别,如:Celeron
System.out.println("CPU缓存数量: " + info.getCacheSize());// 缓冲存储器数量
printCpuPerc(cpuList[i]);
}
}
private static void printCpuPerc(CpuPerc cpu) {
System.out.println("CPU用户使用率: " + CpuPerc.format(cpu.getUser()));// 用户使用率
System.out.println("CPU系统使用率: " + CpuPerc.format(cpu.getSys()));// 系统使用率
System.out.println("CPU当前等待率: " + CpuPerc.format(cpu.getWait()));// 当前等待率
System.out.println("CPU当前错误率: " + CpuPerc.format(cpu.getNice()));//
System.out.println("CPU当前空闲率: " + CpuPerc.format(cpu.getIdle()));// 当前空闲率
System.out.println("CPU总的使用率: " + CpuPerc.format(cpu.getCombined()));// 总的使用率
}
private static void os() {
OperatingSystem OS = OperatingSystem.getInstance();
// 操作系统内核类型如: 386、486、586等x86
System.out.println("操作系统: " + OS.getArch());
System.out.println("操作系统CpuEndian(): " + OS.getCpuEndian());//
System.out.println("操作系统DataModel(): " + OS.getDataModel());//
// 系统描述
System.out.println("操作系统的描述: " + OS.getDescription());
// 操作系统类型
// System.out.println("OS.getName(): " + OS.getName());
// System.out.println("OS.getPatchLevel(): " + OS.getPatchLevel());//
// 操作系统的卖主
System.out.println("操作系统的卖主: " + OS.getVendor());
// 卖主名称
System.out.println("操作系统的卖主名: " + OS.getVendorCodeName());
// 操作系统名称
System.out.println("操作系统名称: " + OS.getVendorName());
// 操作系统卖主类型
System.out.println("操作系统卖主类型: " + OS.getVendorVersion());
// 操作系统的版本号
System.out.println("操作系统的版本号: " + OS.getVersion());
}
private static void who() throws SigarException {
Sigar sigar = new Sigar();
Who who[] = sigar.getWhoList();
if (who != null && who.length > 0) {
for (int i = 0; i < who.length; i++) {
// System.out.println("当前系统进程表中的用户名" + String.valueOf(i));
Who _who = who[i];
System.out.println("用户控制台: " + _who.getDevice());
System.out.println("用户host: " + _who.getHost());
// System.out.println("getTime(): " + _who.getTime());
// 当前系统进程表中的用户名
System.out.println("当前系统进程表中的用户名: " + _who.getUser());
}
}
}
}
分享到:
相关推荐
总的来说,这个压缩包提供了一套针对百度大屏的SUGAR模板,主要用于公共安全管理,特别是老年人监护和疫情防控的数据可视化。用户可以通过导入和定制这些模板,高效地展现相关领域的关键数据指标。
《SugarCRM:实施指南》是Packt出版社出版的一本实用指南,旨在帮助中小型企业了解并实施SugarCRM这一领先的开源客户关系管理(CRM)应用。本书由Michael J. R. Whitehead撰写,他是一位在软件架构、设计与开发以及...
糖crm(SugarCRM)是一款广泛使用的客户关系管理(CRM)软件,主要帮助企业管理和优化与客户的交互,提升销售、市场营销和服务效率。"Sugar 6.5.X 汉化包"是针对这款软件的一个中文语言包,它使得中国用户能够更方便...
糖衣CRM(SugarCRM)是一款开源的客户关系管理系统,它为企业提供了一套全面的解决方案,以管理和优化与客户的互动。以下是对 SugarCRM 使用教程中提到的一些关键知识点的详细解释: 1. **用户管理与权限设置**: ...
7. **报表与仪表板**:SugarCRM内置强大的报表和仪表板工具,通过拖拽式界面生成各类统计报告,实时监控业务状态。学习如何设计和分享报表,有助于企业决策者获取关键业务洞察。 8. **安全性与权限管理**:理解...
通过调整这些参数,管理员可以控制哪些操作被记录,从而更好地监控系统状态。 `log_file_restricted.html`可能是一个错误页面,当用户试图访问受限制的日志文件时会被显示,保护了系统的安全性和数据隐私。 `...
SugarCRM是一款免费且开放源代码的客户关系管理(CRM)软件,以其直观活泼的界面和易于学习的操作特性而受到欢迎。它的商业策略独特,通过提供免费的开源版软件吸引用户,同时推广收费的企业版和专业版,以实现盈利...
4. 合同管理:管理和监控合同的签订、执行和续签过程,确保合规性和商业效益。 5. 报表与分析:强大的报表工具,允许用户自定义报告,获取实时业务洞察,支持决策制定。 二、SugarCRM 5.5 版本的特点 1. 用户界面...
【SugarCRM v4.0 英文版】是一款知名的开源客户关系管理(CRM)系统,专为商业环境设计。此版本是英文语言的,适用于全球范围内的企业使用。作为一个全面的CRM解决方案,它集成了销售、市场营销和服务支持等多个业务...
4. 合同管理:协助企业管理和监控合同生命周期,包括合同起草、审批、执行和续约。 5. 报告与分析:强大的报表工具可以帮助企业收集和分析数据,为决策者提供实时洞察,以便优化业务流程。 6. 定制化与扩展性:...
糖厂管理系统可能是一个专为管理糖业生产流程而设计的应用程序,涵盖了原料采购、生产监控、库存管理、销售跟踪等多个环节。下面我们将深入探讨可能涉及的IT知识点。 1. **项目结构**: 项目通常包含多个文件夹和...
SugarCRM是一款知名的开源客户关系管理(CRM)系统,它的v3.5.0c版本针对中文用户提供了简体中文版,特别强调了“权限版”,这意味着该版本可能包含更精细的权限控制机制,以满足不同规模企业对于数据访问和操作安全...
此外,还会涉及数据导入导出、报告和仪表盘的创建,以帮助管理层更好地监控业务指标。 对于希望实现与其他系统集成的企业,本书会介绍SugarCRM的API接口和开发工具,如Web服务API、Studio和Logic Hooks,让开发者...
这个工具同样具有灵活性,适应项目管理中的问题追踪和状态监控。 在项目管理过程中,小问题的跟进是最大的挑战之一。开源工具可以帮助项目经理有效管理多个同时进行或交叉的项目,确保每个小问题都能得到妥善处理。...
【IBM Connections for Sugar】是将IBM的企业协作平台与SugarCRM集成的一个解决方案,旨在提升团队协作效率,优化客户关系管理。IBM Connections提供了丰富的社交协作工具,包括博客、微论坛、文件共享、活动日历等...
综上所述,"sugar_server" 是一个利用 JavaScript 开发的健康管理工具,专注于血糖监控和营养建议。它结合用户输入的血糖和营养数据,通过智能化分析,为用户提供个性化的健康管理方案,有助于糖尿病患者或健康人群...
1. **项目管理基础**:涵盖项目生命周期的各个阶段,包括启动、规划、执行、监控和收尾。了解项目管理过程组和知识领域,如范围、进度、成本、质量、资源、沟通、风险、采购和利益相关者管理。 2. **项目整合管理**...