sigar的使用,sigar使用

來源:互聯網
上載者:User

sigar的使用,sigar使用

與普通jar包不同,Sigar API還要依賴本地的庫檔案來進行工作,其中:

  • Windows下Sigar.jar 依賴:sigar-amd64-winnt.dll 或 sigar-x86-winnt.dll
  • Linux 下Sigar.jar依賴:libsigar-amd64-linux.so 或 libsigar-x86-linux.so

在jdk的bin目錄下加上sigar的lib目錄中的檔案

public class TestSigar {    public static void main(String[] args) {        try {            // System資訊,從jvm擷取            property();            System.out.println("----------------------------------");            // cpu資訊            cpu();            System.out.println("----------------------------------");            // 記憶體資訊            memory();            System.out.println("----------------------------------");            // 作業系統資訊            os();            System.out.println("----------------------------------");            // 使用者資訊            who();            System.out.println("----------------------------------");            // 檔案系統資訊            file();            System.out.println("----------------------------------");            // 網路資訊            net();            System.out.println("----------------------------------");            // 乙太網路資訊            ethernet();            System.out.println("----------------------------------");        } 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();        // 記憶體總量        System.out.println("記憶體總量:    " + mem.getTotal() / 1024L + "K av");        // 當前記憶體使用量量        System.out.println("當前記憶體使用量量:    " + mem.getUsed() / 1024L + "K used");        // 當前記憶體剩餘量        System.out.println("當前記憶體剩餘量:    " + mem.getFree() / 1024L + "K free");        Swap swap = sigar.getSwap();        // 交換區總量        System.out.println("交換區總量:    " + swap.getTotal() / 1024L + "K av");        // 當前交換區使用量        System.out.println("當前交換區使用量:    " + swap.getUsed() / 1024L + "K used");        // 當前交換區剩餘量        System.out.println("當前交換區剩餘量:    " + swap.getFree() / 1024L + "K free");    }    private static void cpu() throws SigarException {        Sigar sigar = new Sigar();        CpuInfo infos[] = sigar.getCpuInfoList();        CpuPerc cpuList[] = null;        System.out.println("cpu 總量參數情況:" + sigar.getCpu());        System.out.println("cpu 總百分比情況:" + sigar.getCpuPerc());                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());            }        }    }    private static void file() throws Exception {        Sigar sigar = new Sigar();        FileSystem fslist[] = sigar.getFileSystemList();        for (int i = 0; i < fslist.length; i++) {            System.out.println("分區的盤符名稱" + i);            FileSystem fs = fslist[i];            // 分區的盤符名稱            System.out.println("盤符名稱:    " + fs.getDevName());            // 分區的盤符名稱            System.out.println("盤符路徑:    " + fs.getDirName());            System.out.println("盤符標誌:    " + fs.getFlags());//            // 檔案系統類型,比如 FAT32、NTFS            System.out.println("盤符類型:    " + fs.getSysTypeName());            // 檔案系統類型名,比如本地硬碟、光碟機、網路檔案系統等            System.out.println("盤符類型名:    " + fs.getTypeName());            // 檔案系統類型            System.out.println("盤符檔案系統類型:    " + fs.getType());            FileSystemUsage usage = null;            usage = sigar.getFileSystemUsage(fs.getDirName());            switch (fs.getType()) {            case 0: // TYPE_UNKNOWN :未知                break;            case 1: // TYPE_NONE                break;            case 2: // TYPE_LOCAL_DISK : 本地硬碟                // 檔案系統總大小                System.out.println(fs.getDevName() + "總大小:    " + usage.getTotal() + "KB");                // 檔案系統剩餘大小                System.out.println(fs.getDevName() + "剩餘大小:    " + usage.getFree() + "KB");                // 檔案系統可用大小                System.out.println(fs.getDevName() + "可用大小:    " + usage.getAvail() + "KB");                // 檔案系統已經使用量                System.out.println(fs.getDevName() + "已經使用量:    " + usage.getUsed() + "KB");                double usePercent = usage.getUsePercent() * 100D;                // 檔案系統資源的利用率                System.out.println(fs.getDevName() + "資源的利用率:    " + usePercent + "%");                break;            case 3:// TYPE_NETWORK :網路                break;            case 4:// TYPE_RAM_DISK :快閃記憶體                break;            case 5:// TYPE_CDROM :光碟機                break;            case 6:// TYPE_SWAP :頁面交換                break;            }            System.out.println(fs.getDevName() + "讀出:    " + usage.getDiskReads());            System.out.println(fs.getDevName() + "寫入:    " + usage.getDiskWrites());        }        return;    }    private static void net() throws Exception {        Sigar sigar = new Sigar();        String ifNames[] = sigar.getNetInterfaceList();        for (int i = 0; i < ifNames.length; i++) {            String name = ifNames[i];            NetInterfaceConfig ifconfig = sigar.getNetInterfaceConfig(name);            System.out.println("網路裝置名稱:    " + name);// 網路裝置名稱            System.out.println("IP地址:    " + ifconfig.getAddress());// IP地址            System.out.println("子網路遮罩:    " + ifconfig.getNetmask());// 子網路遮罩            if ((ifconfig.getFlags() & 1L) <= 0L) {                System.out.println("!IFF_UP...skipping getNetInterfaceStat");                continue;            }            NetInterfaceStat ifstat = sigar.getNetInterfaceStat(name);            System.out.println(name + "接收的總包裹數:" + ifstat.getRxPackets());// 接收的總包裹數            System.out.println(name + "發送的總包裹數:" + ifstat.getTxPackets());// 發送的總包裹數            System.out.println(name + "接收到的總位元組數:" + ifstat.getRxBytes());// 接收到的總位元組數            System.out.println(name + "發送的總位元組數:" + ifstat.getTxBytes());// 發送的總位元組數            System.out.println(name + "接收到的錯誤包數:" + ifstat.getRxErrors());// 接收到的錯誤包數            System.out.println(name + "發送資料包時的錯誤數:" + ifstat.getTxErrors());// 發送資料包時的錯誤數            System.out.println(name + "接收時丟棄的包數:" + ifstat.getRxDropped());// 接收時丟棄的包數            System.out.println(name + "發送時丟棄的包數:" + ifstat.getTxDropped());// 發送時丟棄的包數        }    }    private static void ethernet() throws SigarException {        Sigar sigar = null;        sigar = new Sigar();        String[] ifaces = sigar.getNetInterfaceList();        for (int i = 0; i < ifaces.length; i++) {            NetInterfaceConfig cfg = sigar.getNetInterfaceConfig(ifaces[i]);            if (NetFlags.LOOPBACK_ADDRESS.equals(cfg.getAddress()) || (cfg.getFlags() & NetFlags.IFF_LOOPBACK) != 0                    || NetFlags.NULL_HWADDR.equals(cfg.getHwaddr())) {                continue;            }            System.out.println(cfg.getName() + "IP地址:" + cfg.getAddress());// IP地址            System.out.println(cfg.getName() + "網關廣播位址:" + cfg.getBroadcast());// 網關廣播位址            System.out.println(cfg.getName() + "網卡MAC地址:" + cfg.getHwaddr());// 網卡MAC地址            System.out.println(cfg.getName() + "子網路遮罩:" + cfg.getNetmask());// 子網路遮罩            System.out.println(cfg.getName() + "網卡描述資訊:" + cfg.getDescription());// 網卡描述資訊            System.out.println(cfg.getName() + "網卡類型" + cfg.getType());//        }    }}

相關文章:

http://bastengao.com/blog/2013/12/using-sigar-in-maven-project.html

http://blog.csdn.net/c446984928/article/details/50739873

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.