监测Linux服务器CPU、硬盘、内存等硬件工作状态

摘要:随着Linux应用的日益广泛,有大量的网络服务器使用Linux操作系统 。为了全面衡量网络运行状况,就需要对网络状态做更细致、更精确的测量。SNMP协议的制订为互 联网测量提供了有力支持。计算机系统是由软件系统硬件系统组成的,检测硬件状态对于保障整个系统

随着Linux应用的日益广泛,有大量的网络服务器使用Linux操作系统。为了全面衡量网络运行状况,就需要对网络状态做更细致、更精确的测量。SNMP协议的制订为互
[table]
[tr][td]
[/td][/tr]
[/table]联网测量提供了有力支持。计算机系统是由软件系统硬件系统组成的,检测硬件状态对于保障整个系统的稳定是非常重要的。不论操作系统是使用Linux、还是Windows,一旦硬件出现故障,那么整个系统的安全就严重了。这里我们主要监测Linux服务器的CPU、硬盘、内存、网络接口、主板等硬件的工作状态。一、/proc文件系统特点
Linux 系统向管理员提供了非常好的方法,使他们可以在系统运行时更改内核,而不需要重新引导内核系统。这是通过 /proc 虚拟文件系统实现的。/proc 文件虚拟系统是一种内核和内核模块用来向进程 (process) 发送信息的机制 (所以叫做 /proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取 有关进程的有用信息,在运行中 (on the fly) 改变设置 (通过改变内核参数)。 与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。不用重新启动而去看 CMOS ,就可以知道系统信息。这就是 /proc 的妙处之一。/proc 目录里主要文件内容,见表-1:

[table]
[tr][td=278]文件或目录名称
[/td][td=277]描述
[/td][/tr]
[tr][td=278]apm
[/td][td=277]高级电源管理信息
[/td][/tr]
[tr][td=278]cmdline
[/td][td=277]内核命令行
[/td][/tr]
[tr][td=278]cpuinfo
[/td][td=277]关于中央处理器信息
[/td][/tr]
[tr][td=278]devices
[/td][td=277]可以用到的设备(块设备/字符设备)
[/td][/tr]
[tr][td=278]dma
[/td][td=277]显示当前使用的DMA通道
[/td][/tr]
[tr][td=278]filesystems
[/td][td=277]核心配置的文件系统
[/td][/tr]
[tr][td=278]ioports
[/td][td=277]当前使用的I/O端口
[/td][/tr]
[tr][td=278]interrupts
[/td][td=277]显示使用的中断
[/td][/tr]
[tr][td=278]kcore
[/td][td=277]系统物理内存映象
[/td][/tr]
[tr][td=278]kmsg
[/td][td=277]核心输出的消息,被送到syslog文件
[/td][/tr]
[tr][td=278]ksyms
[/td][td=277]核心符号表
[/td][/tr]
[tr][td=278]loadavg
[/td][td=277]系统平均负载均衡
[/td][/tr]
[tr][td=278]meminfo
[/td][td=277]存储器使用信息,包括物理内存和交换内存
[/td][/tr]
[tr][td=278]modules
[/td][td=277]当前加载了哪些核心模块。
[/td][/tr]
[tr][td=278]net
[/td][td=277]网络协议状态信息
[/td][/tr]
[tr][td=278]partitions
[/td][td=277]系统识别的分区表
[/td][/tr]
[tr][td=278]pci
[/td][td=277]pci设备信息
[/td][/tr]
[tr][td=278]scsi
[/td][td=277]scsi设备信息
[/td][/tr]
[tr][td=278]self
[/td][td=277]到查看/proc 的程序的进程目录的符号连接
[/td][/tr]
[tr][td=278]stat
[/td][td=277]全面统计状态表
[/td][/tr]
[tr][td=278]swaps
[/td][td=277]交换分区情况
[/td][/tr]
[tr][td=278]uptime
[/td][td=277]系统启动的时间长度
[/td][/tr]
[tr][td=278]version
[/td][td=277]核心版本号
[/td][/tr]
[/table] 每个Linux系统根据软硬件不同/proc 虚拟文件系统的内容也有些差异。/proc 虚拟文件系统有三个很重要的目录:net,scsi和sys。Sys目录是可写的,可以通过它来访问或修改内核的参数,而net和scsi则依赖于内核配置。例如,如果系统不支持scsi,则scsi目录不存在。除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。net目录包括多个 ASCII 格式的网络伪文件, 描述了网络层的部分情况,可以用arp 、netstat、route等命令来查询这些文件。除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的 PID号为目录名,它们是读取进程信息的接口。而self目录则是读取进程本身的信息接口,是一个link。Proc文件系统的名字就是由之而起。
转:http://www.360doc.com/content/12/0726/21/281921_226652477.shtml#

利用好 /proc/ /sys/,就几乎可以查看到所有相关的Linux系统信息,当然也就包括硬件状态。
一般,我会用find命令去查,然后用grep去看。

正好今天有个同事问到,是否可以查看网卡的链接状态,用命令ethtool当然可以:
lenky@robert-T430S:~/图片$ sudo ethtool wlan0 | grep Link
Link detected: yes

如果没有ethtool工具呢?看如下方法:
lenky@robert-T430S:~$ sudo find /sys -name wlan0
/sys/devices/pci0000:00/0000:00:1c.3/0000:03:00.0/net/wlan0
/sys/class/net/wlan0

找到wlan0的信息目录,然后:
lenky@robert-T430S:~$ grep ^ /sys/class/net/wlan0/* | grep operstate
grep: /sys/class/net/wlan0/device: 是一个目录
grep: /sys/class/net/wlan0/duplex: 无效的参数
grep: /sys/class/net/wlan0/phy80211: 是一个目录
grep: /sys/class/net/wlan0/power: 是一个目录
grep: /sys/class/net/wlan0/queues: 是一个目录
grep: /sys/class/net/wlan0/speed: 无效的参数
grep: /sys/class/net/wlan0/statistics: 是一个目录
grep: /sys/class/net/wlan0/subsystem: 是一个目录
grep: /sys/class/net/wlan0/wireless: 是一个目录
/sys/class/net/wlan0/operstate:up

可以看到有个文件operstate就用于标记网卡是否处于链接状态。

当然,这是我已经查到这个文件后的操作,而在一般情况下,我们是不知道的,所以要去搜寻/proc,/sys,然后根据经验去找,然后做试验,比如我这里,当停掉无线网卡时,发现operstate为down了,所以基本可以断定它就可以用来标记一个网卡的物理链接状态就。

技术贴,学习了