本文接上文,继续补充一些常见的获取系统信息的命令或工具。因为很多时候想实现一个需求的时候,并非不会,而是相关的需求恰好落在了盲区,不知道该通过什么途径去实现,所以我会尽可能多地列举一些获取系统指标的工具(入选标准是可以通过开发的手段获取运行结果,方便实现自己的性能监控,所以纯GUI性质的软件在此就不赘述了,把篇幅留给命令行工具)。

1. systeminfo命令 – Windows

通过这个命令,可以获取到主机名、操作系统名称和版本、安装日期、启动时间、操作系统体系架构(32位还是64位)、IP地址等硬件相关的信息。

2. WMIC – windows

wmic是一个命令行版本的windows管理工具,可以对windows进行全方位管理(无论是读取信息、还是进行配置)。比如:

  • 获取计算机名
    wmic computersystem get Name
  • 获取可用物理内存,操作系统名称和版本,启动时间
    wmic os get FreePhysicalMemory, Name, Version,  LastBootUpTime
  • 获取CPU产品名、核数、线程数、最高频率
    wmic cpu get Name, NumberOfCores, NumberOfLogicalProcessors, MaxClockSpeed
  • 获取内存相关数据,如总容量、频率、插槽位置等数据(有几根内存就会显示几条结果)
    wmic memorychip get *
  • 获取硬盘名称、总容量(有几块硬盘就显示几条结果)
    wmic DISKDRIVE get Model, Size
  • 获取分区名字、大小、类型
    wmic PARTITION get Caption, Size, Type

除了在命令行中调用wmic命令,还可以在开发语言中调用系统的winmgmts组件,本质上完全一样,下面是一段vbs获取系统所有分区大小的代码

Set svc = GetObject("winmgmts:") 
Set objs = svc.InstancesOf("Win32_DiskPartition")
for Each obj In objs
  WScript.Echo "Partition: " & obj.Caption & VbTab & "Size: " & obj.Size/(2^30) & "G"
Next

3. .Net大家庭(以下命名空间只存在于Standard Framework) – Windows

  • Microsoft.VisualBasic.Devices.Computer类可以获取物理和虚拟内存的总容量、可用量,操作系统名称,计算机名,以及系统软硬件的简单调用(FileSystem,键盘,鼠标,Audio,Network)
  • ManagementObjectSearcher类这个类使用的接口和wmi一样,只是用法略有差异,wmi根据路径遍历对象并获取对象属性,而ManagementObjectSearcher采用查询语句,通过指定字段对目标对象进行查询。
  • 性能计数器 System.Diagnostics.PerformanceCounter类性能计数器是windows系统管理组件中非常重要的一个成员,它可以激活指定对象(如CPU)的指定计数器(如 % Idle Time),对系统性能的相关指标进行监视。在.Net中也提供了一个System.Diagnostics.PerformanceCounter类来实现相同的目的,不过需要特别注意的是,很多计数器每次取到的数值并不是性能数据,需要减去前值得到两个值的差,这才是真正的性能数据(典型的就是CPU相关的计数器)。
  • System.Diagnostics.Process类Process类用于进程管理:以指定的参数创建新进程,并视需求决定是否接管标准/错误输入输出;可以杀死进程(需要有管理员权限,并且有可能会被杀毒软件阻止);可以根据id或name定位进程,查看进程的cpu、内存占用情况、窗口标题。

4. top命令 – Linux
如果要为系统维护相关命令排一个重要性列表,这个命令永远不会被挤出top 3。借助这个命令,可以对CPU、内存、进程进行总览,还可以实时查看各进程的资源占用情况。

5. ps命令 – Linuxps命令用于查看当前系统运行进程的状态,包括用户、PID、命令行、启动时间等信息。

6. free命令 – Linux用于查看内存和交换分区的使用情况,包括总大小、已使用大小、空闲大小、已缓存大小等数据。

7. iostat命令 – Linux这个命令提供对IO性能数据的统计,可以据此查看当前磁盘开销是否达到瓶颈。

8. smartctl命令 – Linux用于查看物理硬盘健康状态数据,同时也可以提供硬盘健康测试。通过S.M.A.R.T信息和健康状态检测,可以知道硬盘当前的健康状况如何。

9. fdisk命令和df命令 – Linuxfdisk命令是硬盘分区工具,同时也提供分区查看的功能。df命令则专门用于分区数据统计,包括分区列表、总容量、已使用空间、可用空间、挂载点等信息。

10. netstat命令 – Windows/Linux网络连接状态查看工具,可以查看协议、外部地址和端口、本地地址和端口、连接状态、PID、进程等信息。

11. ss命令 – Linux功能和netstat一样,不过效率更高,还可以查看比netstat更详细的连接状态。

12. hostname命令 – Linux

获取或设置主机名。
13. /proc/cpuinfo文件 – Linux

查看cpu基本信息,包括名称、频率、缓存、核心数、指令集等内容。

14. dmidecode命令 – Linux

查看主机的BIOS、主板、CPU、内存等硬件信息。