相关疑难解决方法(0)

如何在简单的 shell 脚本中获取分发名称和版本号?

我正在开发一个简单的 bash 脚本,它应该能够在 Ubuntu 和 CentOS 发行版上运行(对 Debian 和 Fedora/RHEL 的支持将是一个加分项),我需要知道脚本正在运行的发行版的名称和版本(以触​​发特定操作,例如创建存储库)。到目前为止,我所得到的是:

OS=$(awk '/DISTRIB_ID=/' /etc/*-release | sed 's/DISTRIB_ID=//' | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m | sed 's/x86_//;s/i[3-6]86/32/')
VERSION=$(awk '/DISTRIB_RELEASE=/' /etc/*-release | sed 's/DISTRIB_RELEASE=//' | sed 's/[.]0/./')

if [ -z "$OS" ]; then
    OS=$(awk '{print $1}' /etc/*-release | tr '[:upper:]' '[:lower:]')
fi

if [ -z "$VERSION" ]; then
    VERSION=$(awk '{print $3}' /etc/*-release)
fi

echo $OS
echo $ARCH
echo $VERSION
Run Code Online (Sandbox Code Playgroud)

似乎有效,返回ubuntucentos(我没有尝试过其他人)作为发布名称。但是,我有一种感觉,必须有一种更简单、更可靠的方法来解决这个问题——这是真的吗?

它不适用于 RedHat。/etc/redhat-release 包含:Redhat Linux 企业版 5.5 …

linux shell-script distributions

231
推荐指数
8
解决办法
29万
查看次数

如何识别正在运行的 Linux 发行版?

我们办公室有一些新硬件,它们运行自己定制的 Linux 操作系统。

我如何确定它基于哪个发行版?

linux version

94
推荐指数
3
解决办法
13万
查看次数

为什么 uname -a 不返回一个有用的标识符

我将命令输入uname -a到我大学的服务器中并得到了这个:

2.6.18-274.3.1.el5 #1 SMP Tue Sep 6 20:14:03 EDT 2011 i686 i686 i386 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

他们是否试图隐藏服务器运行的 Linux 版本?或者它显示的内核意味着它们不是?因为当我uname -a在 Linux 盒子上输入时,它显示我正在运行 Ubuntu。我只是想弄清楚他们是否出于安全原因想要保密。

distros linux version utilities

4
推荐指数
1
解决办法
3526
查看次数