답변:
커널은 보편적으로 uname
다음 과 같이 감지됩니다 .
$ uname -or
2.6.18-128.el5 GNU/Linux
실제로 어떤 배포 및 버전을 결정하는지에 대한 교차 배포 방법은 없습니다. 이 일관성을 유지하려는 시도가 있었지만 불행히도 결과는 다양합니다. LSB 도구는이 정보를 제공하지만 아이러니하게 기본적으로 설치되지는 않습니다. lsb-release
패키지가 설치된 Ubuntu 9.04 시스템의 예 :
$ lsb_release -irc
Distributor ID: Ubuntu
Release: 9.04
Codename: jaunty
그렇지 않으면 가장 널리 사용되는 방법은 파일을 확인 하는 것입니다. 이들은 대부분의 공통 플랫폼과 그 파생물 (예 : Red Hat 및 CentOS)에 존재합니다./etc/something-release
여기 몇 가지 예가 있어요.
우분투는 /etc/lsb-release
:
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.04
DISTRIB_CODENAME=jaunty
DISTRIB_DESCRIPTION="Ubuntu 9.04"
그러나 데비안은있다 /etc/debian_version
:
$ cat /etc/debian_version
5.0.2
Fedora, Red Hat 및 CentOS에는 다음이 있습니다.
Fedora: $ cat /etc/fedora-release
Fedora release 10 (Cambridge)
Red Hat/older CentOS: $ cat /etc/redhat-release
CentOS release 5.3 (Final)
newer CentOS: $ cat /etc/centos-release
CentOS Linux release 7.1.1503 (Core)
젠투 :
$ cat /etc/gentoo-release
Gentoo Base System release 1.12.11.1
현재 사용할 수있는 SUSE 시스템이 없지만이 시스템은 /etc/SuSE-release
입니다.
슬랙웨어에는 /etc/slackware-release
및 / 또는이 /etc/slackware-version
있습니다.
만드 리바가 /etc/mandriva-release
있습니다.
당시 대부분의 인기 배포판에서
$ cat /etc/*{release,version}
가장 자주 작동합니다. 제거 및 베어 본 "서버"설치에는 배포 용 '릴리스'패키지가 설치되어 있지 않을 수 있습니다.
또한이 정보를 자동으로 얻는 데 사용할 수있는 두 개의 타사 프로그램은 Ohai 및 Facter 입니다.
많은 배포판에는 /etc/issue
또는에 이러한 종류의 정보가 /etc/motd
있지만 일부 보안 정책 및 모범 사례 에 따르면 이러한 파일에는 액세스 알림 배너가 포함되어 있어야합니다.
관련 : 어떻게 노드에 설치된 소프트웨어 패키지의 버전을 확인하는 방법? , 꼭두각시 .
시도해 볼 수도 있습니다.
$ cat /etc/issue
일반적으로 (항상 그런 것은 아니지만) 사용중인 배포판을 알려줍니다. /etc/issue
로그인 화면에 사용되는 파일입니다.
\S[newline]Kernel \r on an \m
핵심: uname -a
cat /etc/os-release
Ubuntu, Fedora 및 OpenSUSE의 경우 최소
10.9 (Mavericks)까지는 OS X에서 작동하지 않습니다. 대신 sw_vers 를 사용하십시오 .
OpenSUSE는 13.1까지 cat / etc / SuSE 릴리스 를 사용했지만 os 릴리스를 위해 더 이상 사용되지 않습니다.
Redhat 6.1에는 cat / etc / redhat-release가 있습니다.
이 문제는 모듈 과 함께 Python을platform
사용하여 해결할 수도 있습니다 .
platform()
기능 사용하기 :
python -c 'import platform; print platform.platform()'
# Linux-4.9.0-8-amd64-x86_64-with-debian-9.6
위의 명령 은 가능한 많은 유용한 정보로 기본 플랫폼을 식별하는 단일 문자열을 반환합니다.
또는 uname()
기능 사용 :
python -c 'import platform; print platform.uname()'
# ('Linux', 'debian', '4.9.0-8-amd64', '#1 SMP Debian 4.9.130-2 (2018-10-27)', 'x86_64', '')
위의 명령은 반환 namedtuple()
포함한 여섯 개 속성 : system
, node
, release
, version
, machine
,와 processor
.
또는 dist()
기능 사용 :
python -c 'import platform; print platform.dist()'
# ('debian', '9.6', '')
마지막 명령은 리눅스 OS 배포판 이름의 이름을 확인하려고 하지만입니다 파이썬 3.5부터 사용되지 않습니다 및 됩니다 파이썬 3.8에서 제거 .