当前位置:   article > 正文

程序通过命令行获取操作系统名称+版本+CPU名称等各种信息_通过系统调用实现:获取本机操作系统版本号

通过系统调用实现:获取本机操作系统版本号

不同的开发语言/工具,获取操作系统和CPU等信息方法不一样,真的记不住。
返回的文字方式也很多样,有时仅仅显示个Linux了事。
但不管什么语言写的程序,都通过调用命令行来获得这些信息,则结果比较统一好看。

(一)命令行取得信息

(1.1)Windows

(1.1.1)操作系统名称版本

通过ver命令查看版本号,并且只看包含Windows字样的一行。
不过由于Windows神奇的版本号设置,就算是Win11看到的也是10.0呢(好像22000以上就是Win11)。

C:\>ver | find /I "Windows"
Microsoft Windows [版本 10.0.22621.900]

  • 1
  • 2
  • 3

(1.1.2)CPU名称

通过wmic指令查看CPU的名称,因为结果第一行是标题,所以查找不看包含标题Name的一行。
PS:假设CPU的名字里面有Name那就看不到了……有这种名字么……?
同理可以查询其它CPU参数信息(比如多少核),或其它硬件信息,这里不再赘述。

C:\>wmic cpu get name | find /V /I "Name"
12th Gen Intel(R) Core(TM) i9-12900F

  • 1
  • 2
  • 3

(1.2)Linux

(1.2.1)操作系统名称版本

通过查看/etc/os-release里的好听的名字,可以看到发行版名称和版本。
然后uname -r查看Linux的内核版本。

[shion@homewsl ~]$ cat /etc/os-release | grep PRETTY | cut -d '"' -f 2
Ubuntu 22.04.1 LTS

[shion@homewsl /]$ uname -r
5.15.74.2-microsoft-standard-WSL2

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(1.2.2)CPU名称

通过查看/proc/cpuinfo里的model name,得到CPU名称。
然后去掉重复(每个核心都有一份重复的CPU名称)。
然后取这行冒号:后面的名称,
并去掉名称前面的空格。

[shion@homewsl ~]$ cat /proc/cpuinfo |grep 'model name'|uniq | cut -d ':' -f 2 | sed 's/^[ ]*//g'
12th Gen Intel(R) Core(TM) i9-12900F

  • 1
  • 2
  • 3

(1.3)实测

  • Microsoft Windows [版本 10.0.22621.900]
  • Ubuntu 22.04.1 LTS 5.15.74.2-microsoft-standard-WSL2
  • Anolis OS 7.9 3.10.0-1160.80.1.0.1.an7.x86_64
  • openEuler 22.03 LTS 5.10.0-60.68.0.93.oe2203.x86_64
  • CentOS Linux7 (Core) 3.10.0-1160.71.1.el7.x86_64
  • ……

(二)程序调用命令行

  • ⚠️ 在Windows下如果要执行ver指令,需要在cmd.exe当中执行(因为ver不是一个单独的程序)。
    所以上面例子指令改为:cmd.exe /C ver
  • ⚠️ 在Windows下执行执行如果加上管道,似乎没法返回结果。Windows真麻烦……

(2.1)Golang

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】

推荐阅读
相关标签