`
bayaci
  • 浏览: 284282 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

获取Linux/Unix文件系统信息

 
阅读更多

设计一套SAP监控系统

http://blog.csdn.net/bayaci/archive/2009/10/13/4666456.aspx

显示系统df(linux )/ bdf (hpunix)的信息


执行代码,获取诸如bdf /usr命令后的信息:
DiskInfo diskInfo = new DiskInfo();
diskInfo.info(directory);
long used = diskInfo.getUsed();
long free = diskInfo.getAvailable();
long kbyte = diskInfo.getKbyte();






代码如下:
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.StringTokenizer;


public class DiskInfo {

/** OS line separator. */
static final String NL = System.getProperty( "line.separator" );

private static long getLong( String value ) throws NumberFormatException {
try {
return Long.parseLong( value );
}
catch( NumberFormatException nfe ) {
throw new NumberFormatException( "On value "+value+": "+nfe.getMessage() );
}
}


private String fileSystem ;
private String mounted ;
private long used = 0L;
private long kbyte = 0L;
private long available = 0L;

public void info(String directory ) throws IOException {

InputStream stream = null;
// Connection connection = null; // Database Connection Object




// to handle standard outputs
final byte[] buf = new byte[1024];
String[] strings;
int i;
int size;


// note OS name
final String osName = System.getProperty( "os.name" );

// System.out.println( "system is " + osName);


if( "Linux".equals( osName ) ) {
final Process p = Runtime.getRuntime().exec( "df " + directory );
stream = p.getInputStream();
final int count = stream.read( buf, 0, buf.length );

String delim = NL;

final StringTokenizer st = new StringTokenizer( new String( buf, 0, count ), delim,
true );

int lineNum = 1;
int field = 0;

while( st.hasMoreTokens() ) {
final String token = st.nextToken(delim);
//System.out.println( "token is " + token);
if( lineNum if( NL.equals( token ) ) {
lineNum++;
if( lineNum == 2 ) {
delim = " " + NL;
}
}
}// else
if( !" ".equals( token ) ) {
field++;
if( field == 0 ) {
setFileSystem ( token );
} else
if( field == 2 ) {
setUsed ( getLong( token ));
} else
if( field == 3 ) {
setAvailable( getLong( token ));
}
}
}
}
else
if( "HP-UX".equals( osName ) ) {
final Process p = Runtime.getRuntime().exec( "bdf " + directory );
stream = p.getInputStream();
final int count = stream.read( buf, 0, buf.length );

String delim = NL;

final StringTokenizer st = new StringTokenizer( new String( buf, 0, count ), delim,
true );

int lineNum = 1;
int field = 0;

while( st.hasMoreTokens() ) {
final String token = st.nextToken(delim);
if( lineNum if( NL.equals( token ) ) {
lineNum++;
if( lineNum == 2 ) {
delim = " " + NL;
}
}
} else
if( !" ".equals( token ) ) {
field++;



if( field == 0 ) {
setFileSystem ( token );
} else
if( field == 3 ) {
setUsed ( getLong( token ));
} else
if( field == 4 ) {
setAvailable( getLong( token ));
}
}
}
} else {
throw new RuntimeException( "Unknown OS name: " + osName + " to implement..." );
}

setKbyte ( getUsed() + getAvailable());
setMounted(directory );


}

private void setUsed(long used) {
this.used = used;
}

public long getUsed() {
return used;
}

private void setKbyte(long kbyte) {
this.kbyte = kbyte;
}

public long getKbyte() {
return kbyte;
}

private void setAvailable(long available) {
this.available = available;
}

public long getAvailable() {
return available;
}

private void setFileSystem(String fileSystem) {
this.fileSystem = fileSystem;
}

public String getFileSystem() {
return fileSystem;
}

private void setMounted(String mounted) {
this.mounted = mounted;
}

public String getMounted() {
return mounted;
}





}



分享到:
评论

相关推荐

    linux/unix系统编程手册附录代码

    《Linux/Unix系统编程手册》是一本深受程序员和系统管理员喜爱的经典著作,它详细阐述了在Linux和Unix操作系统上进行低级编程的各种技术。附录中的代码是书中的实例,旨在帮助读者深入理解和掌握这些系统编程的核心...

    Linux-UNIX系统编程手册.pdf

    此外,它还详细说明了Linux专有特性如epoll、inotify和/proc文件系统,以及UNIX标准(POSIX.1-2001/SUSv3和POSIX.1-2008/SUSv4)的内容,这使得该手册不仅适用于Linux平台,同样对于在其他UNIX平台下工作的程序员也...

    asm.zip_Linux/Unix编程

    【标题】"asm.zip_Linux/Unix编程" 文件包涵盖了多个与Linux/Unix系统相关的编程主题,特别是关于URI(统一资源标识符)和UriBuilder类的使用。在Linux和Unix环境中,开发人员经常需要处理这些类来构建和操作URLs,...

    Linux/UNIX系统编程手册的支持代码

    总的来说,这些支持代码为学习Linux/UNIX系统编程提供了实践平台,通过分析和修改这些代码,读者能够深化对系统调用、文件操作、错误处理等概念的理解。同时,这也是一个很好的机会去学习如何编写符合UNIX哲学的简洁...

    ADC.zip_Linux/Unix编程

    在本压缩包文件“ADC.zip”中,很可能是包含了一些关于如何在Linux/Unix系统上进行ADC编程的资料,例如驱动程序开发、数据采集以及信号处理等方面的知识。 Linux/Unix编程涉及到对内核接口的直接操作,这对于ADC的...

    Linux/Unix系统编程手册 源代码

    《Linux/Unix系统编程手册》是一本权威且深入的书籍,涵盖了Linux和Unix操作系统的系统级编程技术。这本书的源代码提供了实践操作的实例,帮助读者深入理解如何在这些系统中编写高效的程序。源代码的获取是直接从...

    MySQL and Linux/Unix

    ### MySQL在Linux/Unix系统上的安装与配置 #### 概述 MySQL作为一款广泛使用的开源关系型数据库管理系统,在Linux/Unix环境下拥有极高的兼容性和稳定性。本文档将详细介绍如何在不同的Linux发行版上安装MySQL,并...

    nacos全家桶Linux/Unix/Mac/Windows版本

    这里我们主要关注的是Nacos在Linux/Unix/Mac以及Windows系统上的部署和使用,尤其是1.3.1和1.3.2这两个版本。 首先,Nacos的版本选择至关重要。1.3.1和1.3.2都是Nacos在稳定性和功能完善方面的重要里程碑。1.3.1...

    akd.rar_Linux/Unix编程_wellpt3

    标题“akd.rar_Linux/Unix编程_wellpt3”暗示了这个压缩包可能包含与Linux或Unix系统下的编程相关的资料,特别是与“wellpt3”相关的一个项目或教程。描述提到“通过详细简单的例子,介绍JSP中怎么样查询数据库中的...

    cyclictest软件包-linux/Unix内核RT测试

    FTP工具通常用于在本地和远程服务器之间传输文件,这里可能是将文件从本地Windows环境传输到远程的Linux或Unix系统。 3. **上传**:通过FTP工具将解压后的文件上传到目标机器,即运行Linux或Unix操作系统的服务器。 ...

    C++语言实现一个类UNIX文件系统

    在C++中实现一个类UNIX文件系统是一项复杂的任务,它涉及到对操作系统内核级功能的模拟,主要包括文件和目录管理。以下是对这个项目的关键知识点的详细说明: **1. 文件系统基础** 首先,理解文件系统的基本概念至...

    usb_Linux/Unix编程_

    在Linux和Unix操作系统中,USB(Universal Serial Bus)编程是一个重要的领域,主要涉及与外部设备如键盘、鼠标、打印机、存储设备等的交互。本文将深入探讨USB在Linux/Unix环境下的编程技术,包括USB设备驱动程序的...

    近期UNIX/Linux漏洞.pdf

    近期UNIX/Linux漏洞是指在UNIX/Linux操作系统中存在的安全漏洞,这些漏洞可能被黑客利用,危及系统的安全性。本文将对近期的一些UNIX/Linux漏洞进行总结和分析。 1. HP-UX Ignite—UX远程非授 权访问及权限提升...

    jefqr-radian-complexity.rar_Linux/Unix编程_complexity_信道估计

    标题中的“jefqr-radian-complexity.rar”可能是一个包含特定项目的压缩文件,而“Linux/Unix编程_complexity_信道估计”则表明这个压缩包的内容与Linux或Unix操作系统平台上的编程工作有关,特别是涉及到信道估计的...

    linux unix系统编程手册书上代码

    《Linux/Unix系统编程手册》是一本权威的书籍,涵盖了操作系统接口、进程管理、文件操作、网络编程等众多核心主题。书中的代码示例旨在帮助读者深入理解这些概念,并能够实际应用到自己的程序中。以下将对这些关键...

    真正实用的linux/unix命令教程

    【Linux/Unix命令教程】是IT领域初学者的宝贵资源,尤其适合刚接触Linux系统不久的人。Linux系统基于命令行的交互方式,提供了丰富的命令来完成各种任务,从磁盘管理到网络操作,再到系统安全,几乎涵盖了日常操作的...

    java代码中调用linux/unix命令

    在Java编程中,有时我们需要与操作系统进行交互,执行一些系统级别的任务,比如文件操作、进程管理等。在Linux和Unix环境中,这些任务通常可以通过执行Shell命令来实现。本文将详细介绍如何在Java代码中调用Linux/...

    Cacti for Linux/Unix(网络流量监测图形分析工具) v1.2.4.zip

    Cacti for Linux/Unix安装方法 在文件夹include下的config.php中可配置你的数据库信息。 $database_type = "mysql"; //数据库类型 $database_default = "cacti"; //数据库名称 $database_hostname = "localhost...

    zjsqipu.rar_Linux/Unix编程_channel estimation_lms ofdm_ofdm ls

    标题中的"zjsqipu.rar_Linux/Unix编程_channel estimation_lms ofdm_ofdm ls"暗示了我们讨论的主题集中在Linux/Unix环境下的OFDM(正交频分复用)系统,特别是关于信道估计的技术,包括LS(最小二乘估计)和LMS...

Global site tag (gtag.js) - Google Analytics