AIFFEL FD #03 리눅스(Linux) 운영체제

이재준·2021년 7월 7일
0

AIFFEL Fundamental

목록 보기
4/25
post-thumbnail

✅ 핵심 요약

  • 운영체제의 구성과 커널의 역할
  • 터미널, 터미널 에뮬레이터, 셸의 차이점
  • 기본적인 리눅스 명령어

💻 운영체제

운영체제는 최고관리자의 권한을 위임받아 각각의 어플리케이션에 연산 자원을 적절히 분배하여 운영하고, 서로 권한을 침범할 수 없도록 관리하는 역할을 맡는다.


출처 : https://en.wikipedia.org/wiki/Kernel_(operating_system)

위 그림에서 커널에 해당하는 위치가 운영체제의 위치이다. 하지만 커널과 운영체제가 완전히 같은 것은 아니다. 커널은 운영체제의 가장 핵심적인 구성요소 이다.

CPU, Memory, SDD 등 각 종 디바이스를 통합관리하는 자리에 있는 것이 바로 커널(Kernal) 이다.

커널 (Kernal)

  • 하드웨어를 직접 제어하는 UNIX의 가장 핵심적인 부분
  • 쉘에서 명령을 받아 수행하는 역할
  • 프로세스(CPU 스케줄링) 관리, 기억장치 관리, 파일 관리, 입/출력 관리, 프로세스간 통신, 데이터 전송 및 변환 등 여러가지 기능을 수행

운영체제의 내부는 알맹이인 커널과 껍데기인 쉘(Shell) 로 이루어져있다. 여기서 이란 사용자나 응용프로그램이 운영체제와의 의사소통을 하기 위해 필요한 것 을 말한다.

쉘 (Shell)

  • 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기
  • 쉘이 존재해야 커널에세 명령을 전달할 수 있음
  • sh, ash, bash, csh 와 같은 다양한 쉘이 존재하고 cmd창도 쉘의 일종

쉽게 말해, 운영체제의 핵심구성요소는 커널이지만 기계적인 부분이 많기 때문에 사용자가 직접 커널을 제어하기 어렵다. 따라서 사용자가 내린 명령을 커널 부분인 이해할 수 있도록 번역해주는 역할을 하는 것이 쉘이다.

❓ 리눅스 기반 운영체제

리눅스 (Linux) 는 UNIX 운영체제를 본따서 만든 커널이다. 따라서 우분투와 같은 리눅스 운영체제는 리눅스를 커널로서 사용하는 운영체제를 말한다.

우분투에서 Ctrl+Alt+T 를 사용해 텍스트 화면이 들어있는, 흔히 터미널 또는 콘솔 이라고 부르는 창이 열릴 것이다. 이것은 정확히는 그래픽 환경에서 터미널을 모사하는 터미널 에뮬레이터 이다.

터미널 (Terminal), 터미널 에뮬레이터 (Terminal-emulator)

터미널은 텍스트 입출력 환경, tty(teletypewriter, 전기 타자기) 라고도 불린다. 부팅시 GUI로 시작하지 않고 CLI 로 진입한 경우를 터미널이라고 하고, GUI 환경에서 창을 띄워 터미널을 사용할 수 있는 것을 터미널 에뮬레이터라고 한다.

다음은 터미널에서 자주 사용하는 기본적인 명령어들이다. 특히 더 자주 쓰이고 중요한 명령어는 굵은 글씨로 강조하였다.

  • 셀 환경

    • history : 셀 명령어 이력을 출력
    • man : 프로그램의 메뉴얼 페이지를 출력
  • 텍스트 처리

    • echo : 뒤이어 입력한 내용을 출력
    • cat : 하나 이상의 텍스트 파일을 순서대로 출력
    • sort : 입력된 텍스트를 줄 단위로 정렬
    • less : 텍스트 파일의 내용을 자유롭게 조회, 검색
    • head : 텍스트 파일의 앞 몇 줄만 출력
    • tail : 텍스트 파일의 마지막 몇 줄만 출력
    • cut : 텍스트를 구분자(delimiter)에 따라 나눔
    • uniq : 텍스트 중 중복 값들을 제거
    • grep : 정규식을 활용해 텍스트를 검색
    • wc : 텍스트를 단어, 줄, 문자 등 단위로 셈
  • 파일 제어 및 이동

    • ls : 현재 디렉토리 내의 파일 및 폴더들을 출력
    • cd : 해당 폴더로 내가 있는 쉘의 현재 위치를 이동
    • cp : 파일을 복사
    • mv : 파일을 이동
    • rm : 파일을 삭제 (-r : 폴더 삭제, -f : 폴더 내부까지 삭제)
    • chown : 파일의 소유 사용자와 그룹을 변경
    • chmod : 파일 권한을 변경
    • find : 파일을 검색
    • pwd : 현재 내가 위치한 디렉토리 위치 출력
  • 시스템 및 프로세스 제어

    • sudo : 이어지는 명령을 최고 관리자 권한으로 실행
    • apt-get : APT 패키지 관리자를 통해 공인 저장소에서 패키지를 가져다 설치, 제거
    • ps : 현재 프로세스 목록을 출력
    • kill : PID에 해당하는 프로세스에 시그널을 보냄
  • 기타

    • ssh : 원격으로 쉘에 접속
    • tmux : 여러 개의 쉘 세션을 관리, 터미널 접속이 끊어지더라도 쉘 세션 유지
    • watch : 이어지는 명령을 주기적으로 실행하여 표시
    • curl : 주어진 URL 과 통신
    • wget : 네트워크를 통해 파일을 다운로드
    • scp : SSH를 통해 원격으로 파일을 전송

위의 명령어 말고도 더 다양한 명령어들이 존재하지만 필요한 기능의 명령어들을 그때그때 검색해서 사용하면서 사용법을 익히면 될 것이다.

profile
🏫 𝑲𝒚𝒖𝒏𝒈 𝑯𝒆𝒆 𝑼𝒏𝒊𝒗. / 👨‍🎓 𝑪𝒐𝒍𝒍𝒆𝒈𝒆 𝒐𝒇 𝑬𝒏𝒈𝒊𝒏𝒆𝒆𝒓𝒊𝒏𝒈

0개의 댓글