
package comcmmbutil;
import javaio;
/
linux 下cpu 内存 磁盘 jvm的使用监控
@author avery_leo
/
public class DiskSpace {
/
获取cpu使用情况
@return
@throws Exception
/
public double getcpuUsage() throws Exception {
double cpuUsed = 0;
Runtime rt = RuntimegetRuntime();
Process p = rtexec("top -b -n 1");// 调用系统的“top"命令
BufferedReader in = null;
try {
in = new BufferedReader(new InputStreamReader(pgetInputStream()));
String str = null;
String[] strArray = null;
while ((str = inreadLine()) != null) {
int m = 0;
if (strindexOf(" R ") != -1) {// 只分析正在运行的进程,top进程本身除外 &&
strArray = strsplit(" ");
for (String tmp : strArray) {
if (tmptrim()length() == 0)
continue;
if (++m == 9) {// 第9列为cpu的使用百分比(RedHat
cpuUsed += DoubleparseDouble(tmp);
}
}
}
}
} catch (Exception e) {
eprintStackTrace();
} finally {
inclose();
}
return cpuUsed;
}
/
内存监控
@return
@throws Exception
/
public double getMemUsage() throws Exception {
double menUsed = 0;
Runtime rt = RuntimegetRuntime();
Process p = rtexec("top -b -n 1");// 调用系统的“top"命令
BufferedReader in = null;
try {
in = new BufferedReader(new InputStreamReader(pgetInputStream()));
String str = null;
String[] strArray = null;
while ((str = inreadLine()) != null) {
int m = 0;
if (strindexOf(" R ") != -1) {// 只分析正在运行的进程,top进程本身除外 &&
//
// Systemoutprintln("------------------3-----------------");
strArray = strsplit(" ");
for (String tmp : strArray) {
if (tmptrim()length() == 0)
continue;
if (++m == 10) {
// 9)--第10列为mem的使用百分比(RedHat 9)
menUsed += DoubleparseDouble(tmp);
}
}
}
}
} catch (Exception e) {
eprintStackTrace();
} finally {
inclose();
}
return menUsed;
}
/
获取磁盘空间大小
@return
@throws Exception
/
public double getDeskUsage() throws Exception {
double totalhd = 0;
double usedhd = 0;
Runtime rt = RuntimegetRuntime();
Process p = rtexec("df -hl /home");//df -hl 查看硬盘空间
BufferedReader in = null;
try {
in = new BufferedReader(new InputStreamReader(pgetInputStream()));
String str = null;
String[] strArray = null;
while ((str = inreadLine()) != null) {
int m = 0;
strArray = strsplit(" ");
for (String tmp : strArray) {
if (tmptrim()length() == 0)
continue;
++m;
Systemoutprintln("----tmp----" + tmp);
if (tmpindexOf("G") != -1) {
if (m == 2) {
Systemoutprintln("---G----" + tmp);
if (!tmpequals("") && !tmpequals("0"))
totalhd += DoubleparseDouble(tmp
substring(0, tmplength() - 1)) 1024;
}
if (m == 3) {
Systemoutprintln("---G----" + tmp);
if (!tmpequals("none") && !tmpequals("0"))
usedhd += DoubleparseDouble(tmpsubstring(
0, tmplength() - 1)) 1024;
}
}
if (tmpindexOf("M") != -1) {
if (m == 2) {
Systemoutprintln("---M---" + tmp);
if (!tmpequals("") && !tmpequals("0"))
totalhd += DoubleparseDouble(tmp
substring(0, tmplength() - 1));
}
if (m == 3) {
Systemoutprintln("---M---" + tmp);
if (!tmpequals("none") && !tmpequals("0"))
usedhd += DoubleparseDouble(tmpsubstring(
0, tmplength() - 1));
Systemoutprintln("----3----" + usedhd);
}
}
}
}
} catch (Exception e) {
eprintStackTrace();
} finally {
inclose();
}
//上面写在userd和total写反了,懒得改了,就反着用了
Systemoutprintln("----totalhd----" + usedhd);
Systemoutprintln("----usedhd----" + totalhd);
return (totalhd / usedhd) 100;
}
public static void main(String[] args) throws Exception {
DiskSpace cpu = new DiskSpace();
Systemoutprintln("---------------cpu used:" + cpugetcpuUsage() + "%");
Systemoutprintln("---------------mem used:" + cpugetMemUsage() + "%");
Systemoutprintln("---------------HD used:" + cpugetDeskUsage() + "%");
Systemoutprintln("------------jvm监控----------------------");
Runtime lRuntime = RuntimegetRuntime();
Systemoutprintln("--------------Free Momery:" + lRuntimefreeMemory()+"K");
Systemoutprintln("--------------Max Momery:" + lRuntimemaxMemory()+"K");
Systemoutprintln("--------------Total Momery:" + lRuntimetotalMemory()+"K");
Systemoutprintln("---------------Available Processors :"
+ lRuntimeavailableProcessors());
}
}
取到file对象,调用filegettotalspace()可得到总大小,fgetfreespace()可得到可用空间,相减就是已使用空间。
你这问题有问题啊,百度一下跟这问题一样马甲啊
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("文件路径")));
for (String line = brreadLine(); line != null; line = brreadLine()) {
Systemoutprintln(IntegerparseInt(line));
}
}catch (FileNotFoundException e) {
eprintStackTrace();
}catch (IOException e) {
eprintStackTrace();
}
不会。在java中经常用\n就表示换行,Java从文件读取linux字符串,读到\n不会换行。Java是一门面向对象编程语言,1990年代初由詹姆斯·高斯林等人开发出Java语言的雏形。
我记得InputStreamReader和OutputStreamWriter不是可以设置编码的吗?
方式应该是:OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
这样还乱码?那就二进制读取就行了。
记得保证整个编译环境编码统一。
以上就是关于怎么用java代码读取linux主机的磁盘使用信息,同时截取出文件系统和已使用情况 放在map中可以得到keyvalu全部的内容,包括:怎么用java代码读取linux主机的磁盘使用信息,同时截取出文件系统和已使用情况 放在map中可以得到keyvalu、如何用java获取linux下某文件夹的大小、怎样用 java读取txt文件中的数据 linux下等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)