可能重复:
如何找出正在运行的 Linux 版本?
在任何服务器上安装 linux 风格的最佳方法是什么?例如,如果服务器是 RedHat 或 CentOS,我可以简单地执行以下操作:
cat /etc/redhat-release
CentOS release 6.3 (Final)
所有其他主要发行版在哪里存储它们的详细信息文件?谢谢。
可能重复:
如何找出正在运行的 Linux 版本?
在任何服务器上安装 linux 风格的最佳方法是什么?例如,如果服务器是 RedHat 或 CentOS,我可以简单地执行以下操作:
cat /etc/redhat-release
CentOS release 6.3 (Final)
所有其他主要发行版在哪里存储它们的详细信息文件?谢谢。
好吧,你在看多少种变体?RHEL(和克隆)以及 Debian 和 Ubuntu。
理想情况下,
lsb_release -i -s
输出会起作用……但在某些情况下,该命令可能不可用。更全面的示例可在以下位置找到:如何确定正在运行的 Linux 版本?
奇怪的是,在之前链接的示例中没有人提到 /etc/issue。我已经使用那个文件很多年了。
现在我只是在 Puppet 中使用“facter”来获取该信息,grep 和 awk 输出。
FusionInventory是一个跨平台的轻量级库存工具,可以在许多 Linux 发行版以及 BSD、Windows、MacOS X 和其他操作系统上获取此信息。
如果可用,他们
lsb_release
按照上面@ewwhite 的描述使用,但如果没有,他们有一个非常有用的文件列表和正则表达式来检查发行版名称和版本:https ://github.com/fusinv/fusioninventory-agent/blob/ 2.2.x/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/Distro/NonLSB.pm#L16。我建议使用 FusionInventoy 本身来获取此信息,而不是使用此逻辑重新实现您自己的脚本,因为他们的社区会将此功能保持在最新状态。您可以单独使用代理(它输出一个易于解析的 XML/JSON 文件),也可以将其与更广泛的解决方案结合使用,以管理网络中的机器,如GLPI或Rudder,具体取决于您的需要。
您可以使用 facter 以一种很好的规范化方式找出很多细节。它是傀儡的一部分。