linux各发行版的系统平台信息获取方式调研
来源:互联网 发布:mac解除icloud 编辑:程序博客网 时间:2024/06/05 14:30
最近在调研获取linux的平台信息的方法(即获取CentOS,64bit,6.5这些),下面做如下总结:
1、通过 python中platform模块获取
在platform模块中,封装了一系列方法,可以获取linux所有的平台信息。
好处:
(1)python可以跨平台,在windows、linux、mac上执行
(2)各linux发行版中基本都自带了python
(3)不会因为linux 系统版本不同而要进行判断,避免了java读/etc/下的相关配置文件的繁琐工作。
缺点:
(1)需要引入platform模块(python如果不带此模块则无法获取平台信息)
(2)不同版本的linux自带的python版本不同,不确定是否都有platform模块
(3)python 是用C语言实现的,需要编译。
import platform platform.platform() #获取操作系统名称及版本号,'Windows-7-6.1.7601-SP1' platform.version() #获取操作系统版本号,'6.1.7601' platform.architecture() #获取操作系统的位数,('32bit', 'WindowsPE') platform.machine() #计算机类型,'x86' platform.node() #计算机的网络名称,'hongjie-PC' platform.processor() #计算机处理器信息,'x86 Family 16 Model 6 Stepping 3, AuthenticAMD' platform.uname() #包含上面所有的信息汇总,uname_result(system='Windows', node='hongjie-PC', release='7', version='6.1.7601', machine='x86', processor='x86 Family 16 Model 6 Stepping 3, AuthenticAMD')
编程实现:java代码执行Python命令
String ss = "ssh root@172.16.1.1 python -c 'import platform ; print platform.platform() '";MsgVO msg = ActionUtil.execCommand(ss);参考:http://www.cnblogs.com/agnewee/p/6444836.html 讲解了一些python获取系统平台信息的源码,先查看/etc/lsb-release文件,然后再读的其他的文件。
2、通过命令获取
(1)lsb_release -a
(2)uname -a
缺陷:执行命令,但有的系统找不到lsb_release命令。
参考:http://blog.csdn.net/u010738184/article/details/77725836
3、通过java 读配置文件来获取
读/etc/ 下release相关文件,调研知,不同版本的linux系统中配置文件不同,
通过调研各linux发行版本: centos,redhat,ubuntu, suse的最近的几个系统版本,基本确定:
各发行版本获取linux平台信息的方式:
distributor
release
arch
Centos
/etc/centos-release
/etc/centos-release
/proc/version
redhat
/etc/redhat-release
/etc/redhat-release
/proc/version
suse
/etc/SuSE-release
/etc/SuSE-release
/etc/SuSE-release
ubuntu
/etc/lsb-release
/etc/lsb-release
dpkg —print-architecture
注:前期是通过以上方法获取arch,但是centos5.5中的/proc/version的内核信息中没有arch信息,所以只能通过别的方式获取:(1)arch 命令或uname -m
(2)如果命令获取不到,就读/proc/cpuinfo表中的信息(clflush size 字段) 。
读文件有个弊端: 当linux内核升级后,如果不修改这些标记性文件,那统计的信息就不准确。
参考链接:
http://linuxmafia.com/faq/Admin/release-files.html /etc/release equivalents for sundry Linux (and other Unix) distributions
http://blog.csdn.net/pyyaoer/article/details/51108199 linux中/etc/*release文件的重要性
http://blog.sina.com.cn/s/blog_494e45fe0102e2qa.html 各linux发行版本的特征文件
http://www.wo81.com/tec/os/syscmpr/2014-06-11/270.html Linux操作系统版本与内核版本查询方法
http://linuxmafia.com/faq/Admin/release-files.html /etc/release equivalents for sundry Linux (and other Unix) distributions
https://linux.cn/article-4143-1.html#3_103 suse版本
http://os.51cto.com/art/201708/547373.htm linux个发行版本的介绍
https://baike.baidu.com/historylist/centos/498948 centos 版本
http://www.cnblogs.com/kerrycode/p/4338523.html redhat
https://linux.cn/tech/ linux即可
在安装完系统后,/etc/*release 文件就确定不变了,如果有内核升级,则原来的判断条件会失效。
ubuntu apt-get 和 dpkg —print-architecture的区别:都是软件管理工具。http://blog.csdn.net/xiaoyanghuaban/article/details/22946987
apt-get会解决软件包间的依赖关系,但 dpkg不关心依赖关系;pkg是用来安装.deb文件,但不会解决模块的依赖关系,且不会关心ubuntu的软件仓库内的软件,可以用于安装本地的deb文件
用dpkg安装的软件可用apt-get再安装一遍;dpkg绕过apt包管理数据库对软件包进行操作,
apt-get是建立在 dpkg之上的软件管理工具。
-----------------------------------------------------------------------------
希望大家在调研linux各发行版本系统平台信息时如果有其他的结论或发现能多多交流。(PS:ubuntu 获取arch 这个方法不确定,dpkg这个命令是否是所有ubuntu自带的?)
注后期经过验证:
centos5.5中的/proc/version的内核信息中没有arch信息,所以只能通过别的方式获取:
(1)arch 命令或uname -m
(2)如果命令获取不到,就读/proc/cpuinfo表中的信息(clflush size 字段) 。
- linux各发行版的系统平台信息获取方式调研
- linux各发行版本的系统资源获取方式调研
- 查看linux系统发行版信息
- 查看linux系统发行版的命令
- 带发行版 Logo 的系统信息显示工具
- 带发行版 Logo 的系统信息显示工具
- 带发行版 Logo 的系统信息显示工具
- 带发行版 Logo 的系统信息显示工具
- 带发行版 Logo 的系统信息显示工具
- c#获取系统信息的方式
- 查看linux内核信息、发行版本信息以及系统位数的方法
- Linux系统的系统信息查看方式
- [小技巧] 查看Linux发行版的版本信息
- Linux:如何获取Linux发行版的内核头文件
- linux系统信息查询: 内核版本,分支(发行版)名称,位数,cpu信息等
- Linux 信息的各种查询(系统发行版本、内核版本、系统位数)
- linux的发行版
- 不同Linux发行版更新Openssl的方式
- 开发语言选择
- HTML5页面增强元素
- 最通俗易懂的网络应用层协议详解
- 2001.04.10
- java 链表的常见操作
- linux各发行版的系统平台信息获取方式调研
- python找质数对
- Linux: 通过SUID权限来实现“封装”
- C# 正则表达式
- libevent实现https服务器
- Java web开发,在一个jsp里放太多java代码的后果,摘自 java web轻量级开发面试教程
- 2017 ICPCECIC Make cubes
- C++中成员函数的重载、覆盖和隐藏的区别
- Python多线程---threading