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专有特性如epoll、inotify和/proc文件系统,以及UNIX标准(POSIX.1-2001/SUSv3和POSIX.1-2008/SUSv4)的内容,这使得该手册不仅适用于Linux平台,同样对于在其他UNIX平台下工作的程序员也...
【标题】"asm.zip_Linux/Unix编程" 文件包涵盖了多个与Linux/Unix系统相关的编程主题,特别是关于URI(统一资源标识符)和UriBuilder类的使用。在Linux和Unix环境中,开发人员经常需要处理这些类来构建和操作URLs,...
总的来说,这些支持代码为学习Linux/UNIX系统编程提供了实践平台,通过分析和修改这些代码,读者能够深化对系统调用、文件操作、错误处理等概念的理解。同时,这也是一个很好的机会去学习如何编写符合UNIX哲学的简洁...
在本压缩包文件“ADC.zip”中,很可能是包含了一些关于如何在Linux/Unix系统上进行ADC编程的资料,例如驱动程序开发、数据采集以及信号处理等方面的知识。 Linux/Unix编程涉及到对内核接口的直接操作,这对于ADC的...
《Linux/Unix系统编程手册》是一本权威且深入的书籍,涵盖了Linux和Unix操作系统的系统级编程技术。这本书的源代码提供了实践操作的实例,帮助读者深入理解如何在这些系统中编写高效的程序。源代码的获取是直接从...
### MySQL在Linux/Unix系统上的安装与配置 #### 概述 MySQL作为一款广泛使用的开源关系型数据库管理系统,在Linux/Unix环境下拥有极高的兼容性和稳定性。本文档将详细介绍如何在不同的Linux发行版上安装MySQL,并...
这里我们主要关注的是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”暗示了这个压缩包可能包含与Linux或Unix系统下的编程相关的资料,特别是与“wellpt3”相关的一个项目或教程。描述提到“通过详细简单的例子,介绍JSP中怎么样查询数据库中的...
FTP工具通常用于在本地和远程服务器之间传输文件,这里可能是将文件从本地Windows环境传输到远程的Linux或Unix系统。 3. **上传**:通过FTP工具将解压后的文件上传到目标机器,即运行Linux或Unix操作系统的服务器。 ...
在C++中实现一个类UNIX文件系统是一项复杂的任务,它涉及到对操作系统内核级功能的模拟,主要包括文件和目录管理。以下是对这个项目的关键知识点的详细说明: **1. 文件系统基础** 首先,理解文件系统的基本概念至...
在Linux和Unix操作系统中,USB(Universal Serial Bus)编程是一个重要的领域,主要涉及与外部设备如键盘、鼠标、打印机、存储设备等的交互。本文将深入探讨USB在Linux/Unix环境下的编程技术,包括USB设备驱动程序的...
近期UNIX/Linux漏洞是指在UNIX/Linux操作系统中存在的安全漏洞,这些漏洞可能被黑客利用,危及系统的安全性。本文将对近期的一些UNIX/Linux漏洞进行总结和分析。 1. HP-UX Ignite—UX远程非授 权访问及权限提升...
标题中的“jefqr-radian-complexity.rar”可能是一个包含特定项目的压缩文件,而“Linux/Unix编程_complexity_信道估计”则表明这个压缩包的内容与Linux或Unix操作系统平台上的编程工作有关,特别是涉及到信道估计的...
《Linux/Unix系统编程手册》是一本权威的书籍,涵盖了操作系统接口、进程管理、文件操作、网络编程等众多核心主题。书中的代码示例旨在帮助读者深入理解这些概念,并能够实际应用到自己的程序中。以下将对这些关键...
【Linux/Unix命令教程】是IT领域初学者的宝贵资源,尤其适合刚接触Linux系统不久的人。Linux系统基于命令行的交互方式,提供了丰富的命令来完成各种任务,从磁盘管理到网络操作,再到系统安全,几乎涵盖了日常操作的...
在Java编程中,有时我们需要与操作系统进行交互,执行一些系统级别的任务,比如文件操作、进程管理等。在Linux和Unix环境中,这些任务通常可以通过执行Shell命令来实现。本文将详细介绍如何在Java代码中调用Linux/...
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"暗示了我们讨论的主题集中在Linux/Unix环境下的OFDM(正交频分复用)系统,特别是关于信道估计的技术,包括LS(最小二乘估计)和LMS...