2.2 系统信息显示命令
Linux系统包含的相关信息是非常多的,包括文件系统、内核模块、硬件信息、启动参数等,了解这些,对于我们学好Linux系统编程有很大的帮助。Linux系统之所以被世界公认为比Windows系统要优秀的系统,就是因为他提供了很多更接近于底层的命令,让工作人员对它的工作机制一目了然。
2.2.1 proc文件系统:访问系统内核信息
proc不是一个真实的文件系统,不占用外存空间,只是以文件的方式为访问Linux内核数据提供接口。用户和应用程序可以通过查看/proc目录中的相关文件得到系统的运行信息,并可以改变内核的某些参数。由于系统的信息总是动态变化的,所以用户或应用程序读取proc文件时所获得的数据也是瞬时的。许多应用程序依靠proc来访问Linux内核信息。查看/proc目录如下。
# cd /proc # ls 1 1257 1678 22 32 5 5535 5593 5672 690 7798 974 fb locks slabinfo vmstat 10 1279 1694 23 336 5401 5537 5598 5675 692 796 988 filesystems mdstat softirqs zoneinfo 11 1288 1696 24 338 5403 5538 5599 5676 7 8 acpi fs meminfo stat 12 13 17 244 35 5424 5542 5612 5696 7067 8002 asound interrupts misc swaps 1231 1308 1726 248 37 5460 5549 5616 5702 7070 8005 buddyinfo iomem modules sys 1233 14 1736 251 38 5467 5551 5620 5713 7072 8522 bus ioports mounts sysrq-trigger 1234 1423 1740 255 4 5485 5555 5623 5719 714 8542 cgroups irq mpt sysvipc 1235 1467 1742 27 41 5517 5563 5631 5733 722 860 cmdline kallsyms mtrr timer_list 1236 15 18 275 42 5521 5564 5632 5734 723 873 cpuinfo kcore net timer_stats 1237 1503 19 276 43 5523 5565 5636 5735 7355 9 crypto key-users pagetypeinfo tty 1238 1511 1903 28 44 5525 5566 5658 577 746 952 devices kmsg partitions uptime 1239 1515 1905 29 45 5527 5567 5659 594 750 953 diskstats kpagecount sched_debug version 1240 16 2 3 46 5531 5568 5660 6 754 955 dma kpageflags schedstat version_signature 1241 1655 20 30 484 5533 5570 5661 688 774 957 driver latency_stats scsi vmallocinfo 1245 1673 21 31 485 5534 5575 5670 689 779 973 execdomains loadavg self vmmemctl
其中,每一个以数字命名的目录对应系统中运行的一个进程,该数字即为进程的PID号。数字目录中存放了该进程的运行信息,可以通过相应的命令进行查询。例如查询当然系统中运行的vi程序的相关信息。
# ps aux | grep vi root 8002 0.0 0.3 10752 3428 pts/0 T 20:43 0:00 vim //8002为vi的进程号 root 8575 0.0 0.0 3544 820 pts/0 S+ 22:45 0:00 grep--color=auto vim # ls /proc //查看proc目录下是否已存在8002目录 1 1257 1678 22 32 5 5535 5593 5672 690 7798 974 fb locks slabinfo vmstat 10 1279 1694 23 336 5401 5537 5598 5675 692 796 988 filesystems mdstat softirqs zoneinfo 11 1288 1696 24 338 5403 5538 5599 5676 7 8 acpi fs meminfo stat 12 13 17 244 35 5424 5542 5612 5696 7067 8002 asound interrupts misc swaps 1231 1308 1726 248 37 5460 5549 5616 5702 7070 8005 buddyinfo iomem modules sys 1233 14 1736 251 38 5467 5551 5620 5713 7072 8522 bus ioports mounts sysrq-trigger 1234 1423 1740 255 4 5485 5555 5623 5719 714 8590 cgroups irq mpt sysvipc 1235 1467 1742 27 41 5517 5563 5631 5733 722 860 cmdline kallsyms mtrr timer_list 1236 15 18 275 42 5521 5564 5632 5734 723 873 cpuinfo kcore net timer_stats 1237 1503 19 276 43 5523 5565 5636 5735 7355 9 crypto key-users pagetypeinfo tty 1238 1511 1903 28 44 5525 5566 5658 577 746 952 devices kmsg partitions uptime 1239 1515 1905 29 45 5527 5567 5659 594 750 953 diskstats kpagecount sched_debug version 1240 16 2 3 46 5531 5568 5660 6 754 955 dma kpageflags schedstat version_signature 1241 1655 20 30 484 5533 5570 5661 688 774 957 driver latency_stats scsi vmallocinfo 1245 1673 21 31 485 5534 5575 5670 689 779 973 execdomains loadavg self vmmemctl # ls -l /proc/8002/exe //查询vim所执行的程序 lrwxrwxrwx 1 root root 02012-10-28 22:50 /proc/8002/exe -> /usr/bin/vim.basic # ls -l /proc/8002/cwd //查询vim的当前目录 lrwxrwxrwx 1 root root 0 07-25 11:57 /proc/5716/cwd -> /proc # ls -l /proc/8002/environ //查询vim的运行环境 -r--------1 root root 02012-10-28 22:52 /proc/8002/environ
注意:在/proc目录中,可以通过查看cupinfo文件获得处理器的详细信息;通过interrupts文件可以查看当前系统使用的中断号;通过uptime文件可以查看系统运行的时间;通过filesystems文件,可以查看当前系统支持的文件系统类型。
2.2.2 modinfo命令:内核模块信息
modinfo命令用来显示内核模块信息。modinfo命令会检测与内核相关的模块文件,并显示检测的结果。该命令的语法格式如下所示:
modinfo [-a, --author][-d, --description][-l, --license][-n, --filename][-p,--parameters][-V, --version][-h, --help]
其中,各选项的具体说明如表2-3所示。
表2-3 modinfo命令的选项说明
例如,显示模块sg的相关信息,命令如下所示。
# modinfo sg /lib/modules/2.4.20-8/kernel/drivers/scsi/pci2000.o [root@teacher scsi]# modinfo sg filename: /lib/modules/2.4.20-8/kernel/drivers/scsi/sg.o description: "SCSI generic (sg) driver" author: "Douglas Gilbert" license: "GPL" parm: def_reserved_size int, description "size of buffer reserved for each fd"
例如,显示模块pci2000的模块文件,命令如下所示。
# modinfo -n pci2000 /lib/modules/2.4.20-8/kernel/drivers/scsi/pci2000.o
2.2.3 cat /etc/issue命令:系统的当前发行版本
文件/etc/issue中保存了当前系统的发行版本。配合使用cat命令可以显示输出版本信息。例如:
# cat /etc/issue Ubuntu 10.04.1 LTS \n \l root@li-desktop:~#
可以看到,当前的发行版本为Ubuntu 10.04.1,其他的常用版本有Red Hat。
2.2.4 cat /proc/version:查看系统内核当前版本
文件/proc/version保存了当前系统版本的相关信息。配合使用cat命令可以查看当前系统版本情况,命令如下所示。
例如,查看当前系统的版本。
# cat /proc/version Linux version 2.6.32-24-generic (buildd@rothera) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #39-Ubuntu SMP Wed Jul 28 06:07:29 UTC 2010 //友邦图gcc 4.4.3 root@li-desktop:~#
2.2.5 cat /proc/partitions:查看系统当前分区
文件/proc/partitions保存了当前系统分区的相关信息。配合使用cat命令可以查看当前系统分区情况,命令如下所示。
# cat /proc/partitions major minor #blocks name rio rmerge rsect ruse wio wmerge wsect wuse running use aveq 8 0 8388608 sda 7345764861110551222787011640215752921925662003200 015579602231070 //SCSI设备 8 1 104391 sda1 38 85246 40 17 10 54290 0250 330 // SCSI设备分区1 8 2 7759395 sda2731266473311028662276501154611544592160640806890 03766101034540 // SCSI设备分区2 8 3 522112 sda3290 382384150 9243060318721196020 011876001196170 22 0 496672 hdc 1 3 16 0 0 0 0 0-142678116111612690
2.2.6 cat /proc/interrupts命令:显示中断信息
文件/proc/interrupts中保存了系统中断的相关信息。显示系统中正在使用的中断号(IRQ),可以使用cat命令查看/proc/interrupts文件。例如:
# cat /proc/interrupts CPU0 0: 127 IO-APIC-edge timer //定时器中断 1: 10033 IO-APIC-edge i8042 3: 3 IO-APIC-edge 4: 10342 IO-APIC-edge 6: 5 IO-APIC-edge floppy //软盘,一般在有可移动磁盘在工作时的情况下显示 7: 0 IO-APIC-edge parport0 //标准端口com 0 8: 1 IO-APIC-edge rtc0 9: 0 IO-APIC-fasteoi acpi 12: 55367 IO-APIC-edge i8042 14: 0 IO-APIC-edge ata_piix 15: 232621 IO-APIC-edge ata_piix 16: 1145 IO-APIC-fasteoi Ensoniq AudioPCI 17: 23843 IO-APIC-fasteoi ehci_hcd:usb1, ioc0 18: 865 IO-APIC-fasteoi uhci_hcd:usb2 19: 14044 IO-APIC-fasteoi vmxnet ether 24: 0 PCI-MSI-edge pciehp 25: 0 PCI-MSI-edge pciehp //热插拔事件 26: 0 PCI-MSI-edge pciehp 27: 0 PCI-MSI-edge pciehp ……
2.2.7 cat /proc/filesystems命令:常用文件系统信息
文件/proc/filesystems中保存了当前使用的文件系统信息,使用cat命令查看文件/proc/filesystems,可以获得文件系统相关信息。例如:
# cat /proc/filesystems nodev sysfs nodev rootfs //未加载文件系统 nodev bdev nodev proc //进程管理文件系统 nodev cgroup nodev cpuset nodev tmpfs //时间管理文件系统 nodev devtmpfs //驱动映射文件系统 nodev debugfs nodev securityfs //安全管理文件系统 nodev sockfs //套接口文件系统 nodev pipefs //PP管道(进程间通信) nodev anon_inodefs //文件标识符节点管理文件系统(Linux系统可以说一切都是文件) nodev inotifyfs nodev devpts ext3 //EXT3文件系统 ext2 //EXT2文件系统 ext4 //EXT4文件系统 nodev ramfs //光盘文件系统 nodev hugetlbfs nodev ecryptfs nodev fuse fuseblk nodev fusectl nodev mqueue nodev rpc_pipefs nodev nfs //NFS(网络文件系统) nodev nfs4 nodev nfsd nodev vmhgfs //虚拟机共享文件系统 nodev binfmt_misc root@li-desktop:~#
2.2.8 dmesg:启动信息查询
dmesg命令可以检测和控制内核的缓存,通常用来显示输出系统最后一次启动时的内核内部缓存信息。dmesg命令的语法格式如下所示。
dmesg [-c][-n level][-s bufsize]
其中,各选项的具体说明如表2-4所示。
表2-4 dmesg命令选项说明
例如,直接使用dmesg命令显示上次系统启动时的信息,如下所示。
# dmesg Linux version 2.6.32-24-generic (buildd@rothera) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #39-Ubuntu SMP Wed Jul 28 06:07:29 UTC 2010 //友邦图gcc 4.4.3 BIOS-provided physical RAM map: //BIOS物理内存地址映射 BIOS-e820: 0000000000000000-000000000009f800 (usable) BIOS-e820: 000000000009f800-00000000000a0000 (reserved) BIOS-e820: 00000000000ca000-00000000000cc000 (reserved) BIOS-e820: 00000000000dc000-0000000000100000 (reserved) BIOS-e820: 0000000000100000-000000000fef0000 (usable) BIOS-e820: 000000000fef0000-000000000feff000 (ACPI data) BIOS-e820: 000000000feff000-000000000ff00000 (ACPI NVS) BIOS-e820: 000000000ff00000-0000000010000000 (usable) BIOS-e820: 00000000fec00000-00000000fec10000 (reserved) BIOS-e820: 00000000fee00000-00000000fee01000 (reserved) BIOS-e820: 00000000fffe0000-0000000100000000 (reserved) … … 0MB HIGHMEM available. //可用高端内存为0 1024MB LOWMEM available. //1024MB低端内存 On node 0 totalpages: 65536 zone(0): 4096 pages. zone(1): 61440 pages. zone(2): 0 pages. … …. Kernel command line: ro root=LABEL=/ Initializing CPU#0 Detected 2259.329 MHz processor. Calibrating delay loop... 4521.98 BogoMIPS … …