如何获取系统信息与/proc虚拟文件系统

/proc虚拟文件系统
    /proc 虚拟文件系统是一个较快的、高效率执行系统监控的方法。使用/proc的主要缺点是必须保持代码分析与/proc 文件格式改变的同步。事实表明,Linux内核的改变比/proc 文件格式的改变要更频繁,所以,用/proc虚拟文件系统比用内核模块存在的问题要少。
    /proc虚拟文件系统(也叫procfs)是Unix
操作系统
所使用的虚拟文件系统的Linux实现,包括Sun Solaris、LinuxBSD。在/proc开始时,它以一个标准文件系统出现,并包含与正在运行的进程IDs同样名字的文件。然而,在/proc中的文件不占用磁盘空间,它们存在于工作存储器(内存)中。/proc最初的目的是便于进程信息的存取,但是现在,在Linux中,它可被内核的每一部分使用来报告某些事情。
    在/proc文件系统提供的成百上千的值当中,我们将集中考虑
集群
监控所需的最小集,它们包括:
    ◆ /proc/loadavg:包含系统负载平均值;
    ◆ /proc/meminfo:包含存储管理统计量;
    ◆ /proc/net/dev:包含网卡度量;
    ◆ /proc/stat:包含内核统计量;
    ◆ /proc/uptime:包含总的系统正常工作时间及空闲时间。
    每个文件提供的值的数量是不同的。这些文件的完整有效值列表如下。
    ◆ /proc/loadavg提供以下数据:
1秒钟平均负载;
5秒钟平均负载;
15秒钟平均负载;
总作业数;
正在运行的作业总数。
    ◆ /proc/meminfo提供的存储器信息包括:
活动存储器;
不活动存储器;
缓冲存储器;
高速缓冲存储器;
总的自由存储器;
总的高位存储器;
自由高位存储器;
总的低位存储器;
自由低位存储器;
共享存储器;
交换存储器;
交换高速缓冲存储器;
交换自由存储器;
总存储器。
    ◆ /proc/net/dev中包括每个网卡的如下数据:
接收到的字节;
接收到的压缩字节;
收到的误码数;
收到的漏失误码;
收到的FIFO误码;
收到的帧误码;
收到的多播误码;
收到的总包数;
已传输的字节;
已传输的压缩字节;
传输误码总数;
传输载波误码;
传输冲突误码;
传输漏失误码;
传输FIFO误码;
传输的总包数。
    ◆ /proc/stat提供:
引导时间;
上下文切换数量;
中断总量;
进页面总数;
出页面总数;
进程总数;
换入总数;
换出总数;
合计CPU空闲时间;
合计CPU nice时间;
合计CPU系统时间;
合计CPU用户时间。
同时提供对每个CPU的:
单个CPU空闲时间;
单个CPU nice时间;
单个CPU系统时间;
单个CPU用户时间。
以及对每个磁盘驱动器的如下数据:
单个磁盘块读;
单个磁盘块写;
单个磁盘I/O总数;
单个磁盘I/O读;
单个磁盘I/O写。
    ◆ /proc/uptime中包括:
系统总工作时间;
系统总空闲时间。
    值得注意的是,每次某个/proc被读时,一个句柄函数都被内核或特有模块调用,来产生数据。数据在运行中产生,不管是读一个字符还是一个大的字块,整个文件都将被重建。这对效率是至关重要的一点,因为使用/proc的任何系统监控器将吞下整个文件,而不是一点一点地处理它。
    Java提供了丰富的文件I/O类集,包括基于类的流、基于类的块设备,以及J2SDK 1.4提供的新的I/O库。实验表明,一般而言,对基本的块读写文件操作,用RandomAccessFile类进行I/O是最佳的。例如,块读文件操作如下:
mFile = new RandomAccessFile( "/proc/meminfo", "r" );
//以读方式打开文件
mFile.read( mBuffer );  //读文件块


/proc/stat
              kernel/system statistics.   Varies  with  architecture.   Common
              entries include:
              cpu  3357 0 4313 1362393
                     The   amount  of  time,  measured  in  units  of  USER_HZ
                     (1/100ths of a second on  most  architecures),  that  the
                     system  spent  in  user mode, user mode with low priority
                     (nice), system mode, and  the  idle  task,  respectively.
                     The  last  value should be USER_HZ times the second entry
                     in the uptime pseudo-file.
                     In Linux 2.6 this line includes three additional columns:
                     iowait - time waiting for I/O to complete (since 2.5.41);
                     irq -  time  servicing  interrupts  (since  2.6.0-test4);
                     softirq - time servicing softirqs (since 2.6.0-test4).
              page 5741 1808
                     The  number  of  pages the system paged in and the number
                     that were paged out (from disk).
              swap 1 0
                     The number of swap pages that have been  brought  in  and
                     out.
       intr 1462898
                     This  line shows counts of interrupts serviced since boot
                     time, for each of the possible  system  interrupts.   The
                     first  column  is  the  total of all interrupts serviced;
                     each subsequent column is  the  total  for  a  particular
                     interrupt.
              disk_io: (2,0):(31,30,5764,1,2) (3,0):...
                     (major,minor):(noinfo,       read_io_ops,      blks_read,
                     write_io_ops, blks_written)
                     (Linux 2.4 only)
              ctxt 115315
                     The number of context switches that the system underwent.
              btime 769041601
                     boot  time, in seconds since the epoch (January 1, 1970).
              processes 86031
                     Number of forks since boot.
              procs_running 6
                     Number of processes in  runnable  state.   (Linux  2.5.45
                     onwards.)
              procs_blocked 2
                     Number  of processes blocked waiting for I/O to complete.
                     (Linux 2.5.45 onwards.)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值