[Bash] 현재 Linux시스템의 OS 확인하기

2023. 9. 8. 15:18Developers 공간 [Shorts]/Software Basic

728x90
반응형
<분류>
A. 수단
- OS/Platform/Tool : Linux, Kubernetes(k8s), Docker, AWS
- Package Manager : node.js, yarn, brew, 
- Compiler/Transpillar : React, Nvcc, gcc/g++, Babel, Flutter

- Module Bundler  : React, Webpack, Parcel

B. 언어
- C/C++, python, Javacsript, Typescript, Go-Lang, CUDA, Dart, HTML/CSS

C. 라이브러리 및 프레임워크 및 SDK
- OpenCV, OpenCL, FastAPI, PyTorch, Tensorflow, Nsight

 


1. What? (현상)

현재 Linux기반의 시스템의 OS가 Ubuntu인지 CentOS인지 무엇인지 모를때, 파악할 수 있는 명령어가 무엇일지 기록합니다.


2. Why? (원인)

  • X

3. How? (해결책)

1. OS 버전 및 종류 파악하기

  • 현재 OS의 종류에 대해서는 아래 명령어로 파악합니다.
# Method1
cat /etc/*ease
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04 LTS"
NAME="Ubuntu"
VERSION="18.04 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
# Method2
hostnamectl
Static hostname: mytkay
Icon name: computer-desktop
Chassis: desktop
Machine ID: fx8d8x8g8x8x8g9d8gx9gs8dgs9dgsd
Boot ID: 5048wjx8dsg0s8g30sts9t3t93st03t
Operating System: Ubuntu 18.04 LTS
Kernel: Linux 4.15.0-213-generic
Architecture: x86-64

 

 

** Mac의 경우 아래 명령어를 활용합니다. (Mac OS X은 Linux기반이 아닙니다.)

더보기

----------------------------------------

<리눅스(Linux)와 유닉스(Unix)계보>

 

왜 MacOS는 Linux 기반이 아닌지 살펴보고자 리눅스와 유닉스에 대해 간단히 설명해보고자 합니다.

 

우리가 아는 OS를 분류해 나열해 보면 아래와 같습니다.

  • Unix계열 
    • BSD 계열 중 Darwin OS계열 : Mac OS X, iOS
    • System-V 계열
  • Unix-like 계열 중 Linux
    • RedHat 계열 : CentOS
    • Debian 계열 : Ubuntu
    • Mobile OS  : Android
  • Non Unix : Windows
[https://preview.redd.it/e21s2vb3a2a81.png?width=4613&format=png&auto=webp&s=a2bc24827b9caf90eb0c85dae83893976a6d8183]

 

중요한 정보만 간단히 설명해 보면 아래와 같습니다.

  • Unix계열 :
    • 사실상 아래의 Unix-like 계열도 Unix의 파생입니다.
    • C언어는 Unix 시스템 프로그래밍을 하기 위해 만들어 졌습니다.
    • 리눅스를 포함해 CLI가 강하기 때문에 서버시장에서 인기가 많다. (Desktop은 Windows가 절대 강자)
    • POSIX(Portable operating system interface) : 유닉스를 모방한 많은 OS가 나타남에 따라, 이들을 표준화하기 위한 API 혹은 인터페이스 표준을 POSIX라 부르며 이를 만족하는 것들을 Unix-like OS라고 부릅니다. 유닉스 계열은 아니지만 이 표준에 호환이 가능하도록 서브시스템을 제공하는 경우(WSL, Windows Subsystem for Linux)도 있습니다.
  • Unix-like 계열 중 Linux
    • 윈도우보다 리눅스 환경에서 성능이 높은 프로그램들이 많습니다.
    • (위에 언급했다시피) 상당수의 NAS나 공유기들이 Linux나 BSD OS를 쓰는 만큼 서버로서의 위상이 높습니다.
    • Linux는 POSIX 표준을 만족합니다.
    • Linux는 Non-Linux OS에 비해 Layering에서 강점을 보인다고 합니다. 예로, MS-DOS(Monolithic kernel)의 경우 레이어링이 잘 되어 있지 않고 module화에 약합니다. 따라서 overhead는 상대적으로 적지만 유지보수가 어렵다는 치명적 단점이 있다. 하지만 리눅스(microkernel architecture)는 Layering이 잘되어 module화가 잘되어있어 유지보수가 쉽다고 합니다.
    • 사실 리눅스는 OS의 커널만을 의미하며, 리눅스는 GNU(GNUs Not Unix)프로젝트로 인해 GNU/Linux로 완성되었습니다. GNU 프로젝트의 목표는 "Unix와 호환되지만 차별을 두기 위해" 시작했으나, 실행, 복사, 배포, 연구, 수정 및 개선할 수 있는 완전히 자유로운 OS를 만드는 것이었습니다. 따라서 온전히 자유 소프트웨어로 이루어져 있으며 이들은 그 중 대부분이 GPL 라이선스를 따릅니다.
      ** GPL(General Public License) 라이선스 : Copyleft를 보장하는 라이선스로, 소프트웨어의 실행, 변경, 복제, 배포에 대한 자유를 보장합니다. 다만, 이를 사용한 소프트웨어는 GPL 라이센스로 배포되어야 한다는 규칙입니다.
      ** Copyleft : 작품의 연구, 복사, 수정, 사용 , 배포 등의 자유권으로 Copyright의 반대개념
      ** Copyright : 독점적 의미의 저작권

자 이제 Mac OS X가 Linux 계열이 아님을 알수있겠죠? 자이제 Linux 계열(Linx Distribution) 간의 호환성을 확보하기 위해 진행된 LSB 프로젝트를 설명하겠습니다.

 

LSB(Linux Standard Base)은 GNU/Linux 시스템을 표준화하기 위한 프로젝트로, Linux OS에 쓰이는 파일시스템 등의 소프트웨어 시스템 구조를 표준화하는 것이 목적입니다. LSB는 POSIX 사양, SUS(Single UNIX Specification), 그리고 일부 기타 개방형 표준에 기반을 두지만 일부 영역에서는 이들을 확장합니다.

 

따라서 Ubuntu나 CentOS처럼 Linux기반의 OS에서 위와 같은 명령어를 실행하면 동작하겠지만 Mac OS는 LSB 프로젝트의 일부가 아니기 때문에 위 명령어가 동작하지 않는 것이 이해가 되겠죠?

 

OS의 정보를 확인하기 위한 다른 명령어가 있습니다. 이는 아래와 같은데, LSB의 정보를 확인하기 위한 명령어입니다.

# Method3
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04 LTS
Release: 18.04
Codename: bionic

 

첫 줄의 "LSB module이 없다는 메시지"는 LSB프로젝트의 일부가 아니라는 것이 아니라, lsb_core package가 없기 때문입니다. CentOS에서는 아예 위 명령어가 실행되지 않기도 하는데 redhat-lsb-core 패키지가 깔려 있지 않아서 입니다.

----------------------------------------

# Method1
sw_vers
ProductName: macOS
ProductVersion: 12.5.1
BuildVersion: 21O12
# Method2
system_profiler SPSoftwareDataType
Software:

System Software Overview:

System Version: macOS 12.5.1 (21O12)
Kernel Version: Darwin 21.6.0
Boot Volume: Macintosh HD
Boot Mode: Normal
User Name: mytkay
Secure Virtual Memory: Enabled
System Integrity Protection: Enabled
Time since boot: 12 days 20:36

 

2. Linux 버전 및 종류 파악하기

  • Linux Kernel의 버전만을 알고싶을 때는 아래 명령어로 파악합니다.
uname -a
Linux mytkay 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 1 11:00:12 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

 

3. shell의 종류 파악하기

  • bash의 종류를 파악하기 위해서는 아래 명령어로 파악합니다
echo $0
-bash
-zsh
-csh

https://velog.io/@ifyouseeksoomi/CS-Operating-System-Unix-Linux-Ubuntu-macOS-windows

 

 

 

728x90
반응형