Linux & Terminal

안정현·2021년 5월 2일
0

Linux와 Terminal은 현대 개발자의 필수품
=> 프로그램이 배포되고 동작하게 되는 환경이 바로 Linux OS가 설치된 서버이고, 그곳에서 명령어를 전달하는 수단이 바로 Terminal이기 때문

1. 리눅스(Linux)란 무엇인가?

  • 리누스 토발즈(Linus Benedict Torvalds, 69년생)가 개발한 Unix 기반 운영체제

    • GNU(GNU's Not Unix, 그누)

      ⇒ 자선단체 FSF(Free Software Foundation)에서 설립

      ⇒ 유닉스에 반대하여 누구나 자유롭게 사용할 수 있는 환경을 만들고자 했으나(편집기 emacs, 최적화 컴파일러 GCC, 쉘 Bash, 압축프로그램 GZip 등), 가장 중요한 커널이 빠져있었음

    • "1991년 2월 2일, 그는 인텔 80386 기반의 IBM PC를 구입하였다. 한 달 정도 페르시아의 왕자 등의 게임을 하면서 MINIX(Unix 기반 운영체제, Minimal + Unix)의 사본을 기다렸는데, MINIX가 도착한 직후 그는 리눅스 커널을 만드는 일을 시작하였다." - 위키피디아

    • Linux, Git(모두 무료)을 최초로 개발함 ⇒ 오픈소스 커뮤니티에 크게 기여

  • 구글에서 배포하는 안드로이드 역시 리눅스의 한 갈래

  • 원래 CLI(Command Line Interface) 기반

  • 사용자들을 위해 GUI(Graphic User Interface) 기능 추가 ⇒ 그노움(GNOME, 그놈)

2. 리눅스(Linux)를 사용하는 이유?

  • 다양한 이유로 서버는 linux 기반으로 운영되고 있음
  • 안정적 (ex. 블루스크린 ⇒ 서버 중단)
  • 유연성 (오픈소스 ⇒ 사용자가 소스코드를 변경 가능)
  • 무료 ⇒ 오픈소스 활성화 ⇒ 풍부한 생태계

3. 리눅스(Linux)는 언제 사용되나?

  • 안드로이드 기반 스마트폰, 임베디드 시스템(구글 네스트, 삼성 TV, 테슬라 자동차 등)

  • 서버(로컬 서버, AWS 등에 설치된 인스턴스 등)에 설치된 리눅스 환경을 사용할 수 있음

    • 예를 들어 우리가 만든 프로젝트를 AWS EC2 등을 통해 배포하려고 하는데 해당 서버에는 순수한 우분투 외에는 아무 것도 깔려 있지 않은 상태. 만약 git을 GUI를 통해서만 사용할 줄 안다면 여러가지 프로그램과 환경설정, 그 프로그램들의 확장 프로그램을 모두 설치한 후에야 사용 가능. (이 외에 리눅스 기반 가상 컨테이너를 사용하는 기술들

      ⇒ ex. Docker, Kubernetes

      ⇒ 윈도우즈와의 호환은 아직 불완전한 상태

    • 서버의 다양한 동작들을 매뉴얼하게 조작할 수 없음. 쉘 스크립트를 사용한 파이핑, 스케줄링, 유저 그룹 및 파일/폴더에 대한 권한 설정 등.

  • 그렇기 때문에 개발자들에게(특히 직접적으로 서버, 인프라를 구축해야 하는 백엔드 개발자들에게) 아주아주 중요

  • Windows에서도 Linux를 받아들이기 시작

4. FHS(Filesystem Hierarchy Standard)

<출처> wecode(코딩 부트캠프) 세션

0개의 댓글