uname 命令可用于大多数 UNIX 和类 UNIX 系统以及 Linux。
功能说明:uname用来获取电脑和操作系统的相关信息。
语 法:uname [-amnrsvpio][--help][--version]
补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。
参 数:
-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
-m或–machine 显示主机的硬件(CPU)名
-n或-nodename 显示主机在网络节点上的名称或主机名称
-r或–release 显示linux操作系统内核版本号
-s或–sysname 显示linux内核名称
-v 显示显示操作系统是第几个 version 版本
-p 显示处理器类型或unknown
-i 显示硬件平台类型或unknown
-o 显示操作系统名
–help 获得帮助信息
–version 显示uname版本信息
最常用参数 uname -a
几个使用示例(资料来自jb51.net):
[root@jb51.net ~]# uname
Linux
注:单独使用uname命令时相当于uname -s
[root@jb51.net ~]# uname -a
Linux jb51.net 2.6.18-4-686 #1 SMP Mon Mar 26 17:17:36 UTC 2007 i686 GNU/Linux
[root@jb51.net ~]# uname -m
i686
[root@jb51.net ~]# uname -n
jb51.net
[root@jb51.net ~]# uname -r
2.6.18-4-686
[root@jb51.net ~]# uname -s
Linux
[root@jb51.net ~]# uname -v
#1 SMP Mon Mar 26 17:17:36 UTC 2007
[root@jb51.net ~]# uname -p
i686
[root@jb51.net ~]# uname -i
i386
[root@jb51.net ~]# uname -o
GNU/Linux
[root@jb51.net ~]# uname --version //两个-
uname (GNU coreutils) 5.97
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software. You may redistribute copies of it under the terms of
the GNU General Public License http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.
Written by David MacKenzie.
推荐阅读 Linux uname函数调用 资料收集
【uname系统调用】
功能描述:
获取当前内核名称和其它信息。
用法:
#include sys/utsname.h>
extern int uname (struct utsname *__name) __THROW;
参数:
__name:指向存放系统信息的缓冲区,原型如下
struct utsname
{ char sysname[_UTSNAME_SYSNAME_LENGTH];//当前操作系统名
char nodename[_UTSNAME_NODENAME_LENGTH];//网络上的名称
char release[_UTSNAME_RELEASE_LENGTH];//当前发布级别
char version[_UTSNAME_VERSION_LENGTH];//当前发布版本
char machine[_UTSNAME_MACHINE_LENGTH];//当前硬件体系类型
#if _UTSNAME_DOMAIN_LENGTH - 0
/* Name of the domain of this node on the network. */
# ifdef __USE_GNU
char domainname[_UTSNAME_DOMAIN_LENGTH]; //当前域名
# else
char __domainname[_UTSNAME_DOMAIN_LENGTH];
# endif
#endif
};
返回说明:
成功执行时,返回0。失败返回-1,errno被设为EFAULT,表示buf无效。
关于uname的具体用法可以使用“man uname”来查看。
实例如下:
#include sys/utsname.h>
#include stdio.h>
#include stdlib.h>
int main()
{
struct utsname testbuff;
int fb=0;
fb=uname(testbuff);
if(fb0)
{
perror("uname");
return 0;
}else
{
printf(" sysname:%s\n nodename:%s\n release:%s\n version:%s\n machine:%s\n \n ",\
testbuff.sysname,\
testbuff.nodename,\
testbuff.release,\
testbuff.version,\
testbuff.machine);
#if _UTSNAME_DOMAIN_LENGTH - 0
# ifdef __USE_GNU
printf(" domainame:%s\n ",testbuff.domainname);
//char domainname[_UTSNAME_DOMAIN_LENGTH]; //当前域名
# else
printf(" __domainame:%s\n ",testbuff.__domainname);
//char __domainname[_UTSNAME_DOMAIN_LENGTH];
# endif
#endif
}
return 0;
}