相关疑难解决方法(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万
查看次数

如何确定 CentOS 版本?

如何在没有访问任何图形界面的情况下确定 CentOS 服务器的版本?我尝试了几个命令:

# cat /proc/version
Linux version 2.6.18-128.el5 (mockbuild@hs20-bc1-7.build.redhat.com)
(gcc version 4.1.2 20080704 (Red Hat 4.1.2-44)) …

# cat /etc/issue
Red Hat Enterprise Linux Server release 5.3 (Tikanga)
Run Code Online (Sandbox Code Playgroud)

但哪一个是正确的:4.1.2-4 from/proc/version或 5.3 from /etc/issue

version centos

130
推荐指数
7
解决办法
22万
查看次数

如何知道我使用的是哪个 Linux 和哪个版本

当我cat /proc/version在终端中运行命令时,我得到以下输出:

Linux version 2.6.18-348.1.1.0.1.el5 (mockbuild@ca-build56.us.oracle.com) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)) #1 SMP Tue Jan 22 16:39:05 PST 2013
Run Code Online (Sandbox Code Playgroud)

如果我运行lsb_release -a命令,我可以看到以下信息:

LSB Version:    :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics-4.0-amd64                         :graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-ia32:prin                         ting-4.0-noarch
Distributor ID: EnterpriseEnterpriseServer
Description:    Enterprise Linux Enterprise Linux Server release 5.9 (Carthage)
Release:        5.9
Codename:       Carthage
Run Code Online (Sandbox Code Playgroud)

根据 的输出 cat /proc/version,我可以看到我使用的是 RedHat 4.1.2。虽然根据 的输出lsb_release -a,我正在使用Linux Server release 5.9. 哪一个是正确的?

如果是,它的年龄是多少?因为,我没有得到这个版本的 MySQL 5.6 安装程序。MySQL 5.6 仅适用Red Hat Enterprise Linux 5 / Oracle Linux 5 …

rhel version

51
推荐指数
5
解决办法
12万
查看次数

如何确定硬件和操作系统的位数?

uname我的 RHEL 5.4 机器上的-a输出是:

Linux <machine name> 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

这是否意味着硬件是 64 位(可能是第一个 x86_64),而操作系统也是最后一个 x86_64 的 64 位?

另外,这么多 x86_64 实例是什么?
我可以在 32 位操作系统上安装 64 位 vm,反之亦然吗?

linux 64bit hardware architecture

5
推荐指数
1
解决办法
5247
查看次数

未找到 stat 命令

我想在我的 unix shell /usr/bin/ksh 中执行 stat 命令:

输入:

/bin/date +%Y%m%d%H%M%S -d "$(/usr/bin/stat -c %x find.txt)"
Run Code Online (Sandbox Code Playgroud)

和输出:

/usr/bin/ksh: stat:  not found
Run Code Online (Sandbox Code Playgroud)

我的系统: SunOS 5.10 Generic_150400-23 sun4v sparc sun4v

solaris ksh stat

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

哪个工具可以告诉我在 uname 为通用时运行的 Linux 发行版?

我通常uname用来确定正在运行的操作系统,但我在多台机器上有帐户,我不知道正在运行的特定发行版。

uname返回Linux 时,我尝试过uname -a,但只看到以下内容:

 Linux host123 3.0.58-0.6.6-pae blah blah blah i686 i686 i386 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

我的猜测是这是一个 SUSE 发行版,但是有没有更好的方法来了解安装了哪个发行版,类似于unameAIX、Darwin 等的正常显示方式……?

linux

0
推荐指数
1
解决办法
241
查看次数