问题:
1. 当使用一台linux机器的时候,常常需要确认当前所用操作系统的版本信息,内核信息等,
操作系统的版本信息可以通过以下命令完成,比如:lsb_release -a;cat /etc/issue
而查看内核版本可以通过以下命令完成,比如:uname -a;cat /proc/version,
这些命令比较难以记忆,本文试图解释一下这些命令名称的由来,以便于记忆。
解决办法:
1. 查看操作系统版本的命令
1.1 命令lsb_release -a
lsb_release提供特定的LSB (Linux Standard Base)和发布版本相关信息。
ubuntu中运行lsb_release -a的结果如下:
- david@david-nb:~$ lsb_release -a
- No LSB modules are available.
- Distributor ID: Ubuntu
- Description: Ubuntu 11.10
- Release: 11.10
- Codename: oneiric
- david@david-nb:~$
1.2 命令cat /etc/issue
/etc目录下放的是系统的配置文件。
/etc/issue文件通常包括系统的一段短说明或欢迎信息.内容由系统管理员确定。
ubuntu中执行cat /etc/issue命令的结果如下:
- david@david-nb:~$ cat /etc/issue
- Ubuntu 11.10 \n \l
- david@david-nb:~$
2. 查看内核版本的命令
2.1 命令uname -a
uname来源于utsname,是一个系统调用,格式为
int uret = uname((struct utsname)* uname_buf),
其中,结构体指针uname_buf中主要存放的是操作系统名称、内核版本和硬件体系结构;
结构体struct utsname的定义如下:
- struct utsname {
- char sysname[]; /* Operating system name (e.g., "Linux") */
- char nodename[]; /* Name within "some implementation-defined
- network" */
- char release[]; /* OS release (e.g., "2.6.28") */
- char version[]; /* OS version */
- char machine[]; /* Hardware identifier */
- #ifdef _GNU_SOURCE
- char domainname[]; /* NIS or YP domain name */
- #endif
- };
utsname中的UTS指的应该是Universal Time–sharing System(通用分时系统)。
ubuntu中运行uname -a的结果如下所示:
- david@david-nb:~$ uname -a
- Linux david-nb 3.0.0-32-generic #51-Ubuntu SMP Thu Mar 21 15:51:26 UTC 2013 i686 i686 i386 GNU/Linux
- david@david-nb:~$
内核版本为:3.0.0-32-generic
2.2 命令cat /proc/version
proc文件系统是一个虚拟文件系统,通过它可以使用一种新的方法在linux内核空间和用户空间进行通信。
与普通文件不同的是,这些虚拟文件都是动态创建的。
/proc非常强大,如下所示为对/proc中部分元素执行一次交互查询的结果:
- david@david-nb:~$ ls /proc
- 1 1279 1480 1512 1576 1646 1803 20 264 3081 565 902 buddyinfo fb loadavg scsi version_signature
- 1001 13 1485 1515 1580 1649 1807 2052 265 3082 6 903 bus filesystems locks self vmallocinfo
- 1005 1362 1487 1523 1584 1655 1815 2095 27 3084 7 904 cgroups fs mdstat slabinfo vmstat
- 1006 1370 1492 1526 1585 1656 1816 21 2744 3085 754 914 cmdline interrupts meminfo softirqs zoneinfo
- 1007 1390 1493 1527 1589 1666 1817 216 2796 318 806 915 consoles iomem misc stat
- 1013 14 1496 1539 16 1671 1828 217 28 323 837 933 cpuinfo ioports modules swaps
- 1030 1409 15 1542 1616 1673 183 23 2856 37 838 942 crypto irq mounts sys
- 1073 1418 1501 1544 1617 1676 188 2391 2881 40 844 977 devices kallsyms mtd sysrq-trigger
- 1079 1448 1503 1548 1619 17 19 24 29 41 847 982 device-tree kcore mtrr sysvipc
- 1084 1453 1506 1555 1622 1711 190 2448 2998 453 848 991 diskstats key-users net timer_list
- 11 1456 1508 1562 1623 1712 1957 25 3 455 882 992 dma kmsg pagetypeinfo timer_stats
- 1168 1457 1509 1563 1625 1776 1992 2538 3017 528 885 994 dri kpagecount partitions tty
- 1175 1459 1510 1566 1627 1790 1997 2548 3070 531 899 acpi driver kpageflags sched_debug uptime
- 12 1464 1511 1569 1633 18 2 26 3080 540 9 asound execdomains latency_stats schedstat version
- david@david-nb:~$
其中,version文件中存储的是内核的版本、操作系统的名称等信息,与uname -a的内容基本相同。
- david@david-nb:~$ cat /proc/version
- Linux version 3.0.0-32-generic (buildd@aatxe) (gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3) ) #51-Ubuntu SMP Thu Mar 21 15:51:26 UTC 2013
- david@david-nb:~$
内核版本为3.0.0-32-generic