Post

리눅스

리눅스

Linux는 Linus Torvalds가 1991년 9월 17일에 처음 출시한 운영 체제 커널인 Linux 커널을 기반으로 하는 오픈 소스 Unix 계열 운영 체제로, 개발자들 사이에서 가장 인기 있는 운영체제중 하나이다. 😉

리눅스의 구성요소

  • 커널: OS의 핵심 부분인 커널은 CPU, 메모리, 주변 장치를 관리한다.
  • 시스템 라이브러리:
    • 설명: 커널 기능에 액세스하는 데 사용하는 특수 기능 또는 프로그램으로, OS의 기능 대부분을 구현한다.
    • 예시
      • GNU(컴퓨터 소프트웨어의 모음집) C 라이브러리(glibc): 파일 연산, 문자열 조작, 메모리 할당 등 시스템과 인터페이스 하는 데 필요한 모든 API 기능을 정의하는 C 라이브러리이다.
      • 동적 링커 라이브러리(ld-linux.so): 이 라이브러리는 동적 링크, 프로그램 시작 시 공유 라이브러리를 메모리에 로드, 프로그램 호출을 라이브러리 호출에 바인딩하는 역할을 한다.
      • Pthread 라이브러리: 이 라이브러리는 멀티스레딩(스레드 생성 및 관리)을 위한 API를 제공한다.
  • 시스템 유틸리티:
    • 설명: 개별적이고 전문적인 관리 작업을 수행하는 프로그램이다.
    • 예시
      • GNU 핵심 유틸리티(coreutils): GNU 운영 체제의 기본 파일, 셸 및 텍스트 조작 유틸리티가 포함되어 있다. 예를 들면 ls, cp, mv, cat, rm, wc 및 chmod이다.
      • Bash: GNU 프로젝트의 셸 및 명령 언어 해석기이다. 대부분의 Linux 배포판에서 기본 쉘이다.
      • Tar: 파일을 단일 파일(tarball)로 보관하는 유틸리티로 일반적으로 압축과 함께 사용된다.
      • Grep: 일반 텍스트 데이터에서 정규식과 일치하는 줄을 검색하는 유틸리티이다.
      • Sed: 텍스트 필터링 및 변환을 위한 스트림 편집기이다.
      • Awk: 패턴 스캔 및 언어 처리를 위한 강력한 유틸리티이다.
  • : 쉘은 Linux 커널에 사용자 인터페이스를 제공하는 명령줄 해석기이다.

리눅스의 특징

  • 다중 사용자: Linux는 다중 사용자 시스템이다. 즉, 여러 사용자가 동시에 메모리/RAM/응용 프로그램과 같은 시스템 리소스에 액세스할 수 있다.
  • 멀티태스킹: Linux는 서로의 성능에 영향을 주지 않고 동시에 여러 작업을 실행할 수 있다.
  • 보안: Linux는 비밀번호 보호/특정 파일에 대한 액세스 제어/데이터 암호화와 인증 기능을 통해 사용자 보안을 제공한다.

파일 시스템 계층

  • /(루트): Linux 파일 시스템의 기본 디렉터리
  • /bin: 시스템을 부팅하고 실행하는 데 있어야 하는 바이너리(프로그램)가 포함되어 있다.
  • /boot: Linux 커널을 포함한 부트 로더 관련 파일이 포함되어 있다.
  • /dev: 장치 파일이 포함되어 있다.
  • /etc: 시스템에 대한 구성 파일이 포함되어 있다.
  • /home: 루트 사용자를 제외한 모든 사용자의 홈 디렉터리를 포함한다.
  • /lib: 시스템 프로그램에 필요한 공유 라이브러리 이미지가 포함되어 있다.
  • /media: 이동식 미디어의 마운트 지점이다.
  • /mnt: 파일 시스템을 임시로 마운트하기 위한 마운트 지점이다.
    • ‘마운트’는 디렉터리 구조의 특정 지점에서 파일 시스템에 액세스할 수 있도록 하는 프로세스를 의미
  • /opt: 선택적 응용 프로그램 소프트웨어 패키지이다.
  • /proc: 커널이 프로세스에 정보를 보내는 메커니즘을 제공하는 가상 파일 시스템이다.
  • /root: 루트 사용자의 홈 디렉터리이다.
  • /sbin: 시스템 부팅, 복원, 복구 및/또는 복구에 필수적인 바이너리와 시스템 관리용 바이너리가 포함되어 있다.
  • /tmp: 임시 파일.
  • /usr: 대부분의 사용자 유틸리티 및 응용 프로그램이 포함되어 있다.
  • /var: 로그나 데이터베이스와 같은 가변 데이터 파일이다.

기본 명령

  • ls: 디렉터리 내용을 나열한다.
  • cd: 현재 디렉터리를 변경한다.
  • pwd: 현재 작업 디렉터리 경로를 인쇄한다.
  • cp: 파일과 디렉터리를 복사한다.
  • mv: 파일과 디렉터리를 이동하거나 이름을 바꾼다.
  • rm: 파일과 디렉터리를 제거한다.
  • mkdir: 새 디렉터리를 만든다.
  • rmdir: 빈 디렉터리를 제거한다.
  • touch: 빈 파일을 생성하거나 기존 파일의 타임스탬프를 업데이트한다.
  • echo: 인수로 전달되는 텍스트/문자열 한 줄을 표시한다.
  • grep: 파일에서 특정 패턴을 검색하고 해당 패턴이 포함된 줄을 표시한다.
  • sudo: 슈퍼유저 권한으로 명령을 실행한다.
  • chmod: 파일이나 디렉터리의 권한을 변경한다.
  • chown: 파일이나 디렉터리의 소유권을 변경한다.

오픈 소스

소스 코드를 자유롭게 수정하고 배포할 수 있도록 하는 일종의 소프트웨어 라이센스를 말한다.

오픈 소스 원칙

  • 무료 재배포: 라이센스는 어느 당사자도 여러 소스의 프로그램이 포함된 전체 소프트웨어 배포의 일부로 소프트웨어를 판매하거나 제공하는 것을 제한하지 않는다.
  • 소스 코드: 프로그램에는 소스 코드가 포함되어야 하며 소스 코드 및 컴파일된 형태로 배포가 허용되어야 한다.
  • 파생 저작물: 라이센스는 수정 및 파생 저작물을 허용해야 하며 원본 소프트웨어의 라이센스와 동일한 조건에 따라 배포될 수 있도록 허용해야 한다.
  • 개인이나 집단에 대한 차별 금지: 라이센스는 개인이나 집단을 차별해서는 안 된다.
  • 라이센스 배포: 프로그램에 부여된 권리는 해당 당사자가 추가 라이센스를 실행할 필요 없이 프로그램을 재배포하는 모든 사람에게 적용되어야 한다.

대표적인 오픈 소스

  • Linux: Ubuntu, Fedora, CentOS와 같은 다양한 배포판의 기반 역할을 하는 오픈 소스 운영 체제 커널
  • Apache HTTP Server: 널리 사용되는 웹 서버 소프트웨어
  • Mozilla Firefox: 널리 사용되는 오픈 소스 웹 브라우저
  • LibreOffice: 깔끔한 인터페이스와 다양한 기능을 갖춘 도구를 갖춘 강력한 오피스 제품군
  • VLC 미디어 플레이어: 무료 오픈 소스 크로스 플랫폼 멀티미디어 플레이어
  • Git: 소프트웨어 개발 중 소스 코드의 변경 사항을 추적하기 위한 버전 제어 시스템
This post is licensed under CC BY 4.0 by the author.

© zwoong. Some rights reserved.