본문 바로가기
System/Linux

[Linux] Linux 관련 기본 정보와 기초 명령어

by Yoonsoo Park 2024. 9. 11.

*해당 정보는 Rocky Linux 9.4를 기반으로 한 정보입니다

1. Linux 관련 기초 상식

1) Linux에 대한 기본적인 설명

 Linux는 리누즈 토발즈(Linus Torbals)가 UNIX를 모방한 오픈 소스 운영 체제이다. 여기서 오픈 소스(Open Source)란, 소스코드를 공개한 것을 의미한다. 즉, 누구나 수정/재배포가 가능하다는 것이다. 단, GNU 선언*에 따라 반드시 수정한 코드를 공개해야 한다. Linux의 기본 UI(User Interface)는 CUI(Command User Interface)이며, 옵션으로 GUI(Graphic User Interface)를 지원한다. 

*GNU(GNU's not a Unix) 선언(GNU Manifesto) : Unix와 유사하지만 완전히 자유로운 운영 체제를 만들자는 것으로, 소프트웨어가 자유롭게 사용, 수정, 공유될 수 있어야 한다는 신념을 바탕으로 리처드 스톨만에 의해 시작되었다. 

 

 Linux의 특징은 리누즈 토발즈가 제작한 커널에 개인 또는 조직이 만든 쉘, 응용 프로그램을 결합하여 여러 배포판(distribututions)을 만든다는 것이다. 배포판들은 크게 Redhat 계열, Debian 계열로 나눠진다. 다음의 설명을 참고하자. 

  • Redhat 
    • 전세계적으로 점유율이 높고 우리나라에서는 특히 높은 배포판 
    • 레드햇 계열 중에서 가장 많이 사용되는 배포판 
      • Redhat Enterprise Linux (RHEL) 
      • CentOS Linux - 대표적인 레드햇 클론 리눅스였으나 레드헷에서 인수 후 단종(EOL), 9는 아직 사용 가능하다
      • Fedora Linux  - 레드헷의 무료 버전, 거의 레드헷 베타 버전처럼 사용된
      • Rocky Linux - CentOS의 단종에 반발한 개발자가 만든 현재 대표적인 레드헷 클론 리눅스
  • Debian 
    • 우리나라에서 점유율이 낮았으나…. 근래에 점유율이 빠르게 올라가고 있다. 
    • 데비안 계열 중에서 이 사용되는 배포판 
      • Ubuntu Linux - 서버용
      • Kali Linux  - 모의 해킹용
  • Slackware 
    • 전세계적으로는 아주 많이 사용되지만 우리나라에서는 많이 사용되지 않는다. 
  • Android 
    • 안드로이드 스마트폰용으로 제작된 배포판 

*국내 온 프레미스는 Redhat, CentOS, Rocky, 클라우드는 대부분 라이센스 문제 때문에 Ubunto를 사용

 

2) Linux의 구성 요소: 커널(Kernal), 쉘(Shell), 응용 프로그램(Applications)

 커널(kernal)

  • Linux의 핵심 요소로 하드웨어(CPU, RAM, Storage..)와 응용 프로그램 간의 모든 상호작용을 관리하고, 아래와 같은 역할을 수행하여 응용 프로그램이 하드웨어를 안전하고 효율적으로 사용할 수 있도록 한다. 
  • 커널의 주요 역할 
    • 프로세스 관리: 커널은 모든 프로세스의 생성, 스케줄링, 종료를 관리한다. 여러 프로세스가 동시에 실행될 수 있도록 CPU 시간을 배분하고, 프로세스 간의 통신을 조정한다.
    • 메모리 관리: 커널은 시스템 메모리를 효율적으로 관리하여 각 프로세스가 필요한 메모리를 할당받고, 사용이 끝난 메모리를 해제한다. 또한, 가상 메모리 관리 기능을 제공하여 실제 메모리보다 더 많은 메모리를 사용할 수 있게 한다.
    • 장치 관리: 커널은 하드웨어 장치(예: 디스크, 네트워크 카드, 프린터 등)와 상호작용하기 위한 장치 드라이버를 관리한다. 이를 통해 응용 프로그램이 하드웨어를 직접 제어하지 않고도 하드웨어 기능을 사용할 수 있다.
    • 파일 시스템 관리: 커널은 파일의 생성, 삭제, 읽기, 쓰기 작업을 관리하고, 다양한 파일 시스템을 지원한다.
    • 보안 및 권한 관리: 커널은 사용자의 인증과 권한을 관리하여 시스템의 보안을 유지하고, 무단 접근을 방지한다.

쉘(Shell)

  • 쉘은 명령어 인터프리터로 사용자가 입력한 명령어를 해석하고, 커널이 이해할 수 있는 기계어로 번역하여 전달한다. 
  • 쉘 스크립트 작성을 통해 자동화할 수 있다.
  • 쉘의 종류
    • Bash (Bourne Again Shell): 리눅스에서 가장 널리 사용되는 쉘로, 기본적으로 설치되어 있다. 스크립트 작성과 사용자 친화적인 인터페이스를 제공한다.
    • Zsh (Z Shell): 고급 기능과 사용자 맞춤화 기능이 강화된 쉘이다.
    • Csh (C Shell): C 언어 스타일의 문법을 사용하는 쉘이다.
    • Ksh (Korn Shell): 성능과 기능이 향상된 쉘로, 상업적 환경에서 많이 사용된다.

응용 프로그램(Applications)

  • 특정 작업이나 기능을 수행하기 위해 사용자가 설치하고 실행하는 프로그램이다. 

 

3) 프롬프트와 커서

프롬프트(prompt, 1)는 명령어를 입력할 준비가 되었음을 나타내는 문자열로, 로그인한 유저의 계정 정보를 나타낸다(root, user, 현재 작업 중인 디렉토리 명). 커서(curser, 2)는 터미널에서 텍스트를 입력할 수 있는 위치를 나타내는 깜박이는 아이콘이다.

프롬프트와 커서

 

2. Linux 기초 명령어 

1. date

:  날짜 시간을 확인  =>  실제 시간과 상이한 경우가 존재하기 때문에 확인해줘야 한다

 

  • 날짜 시간 변경 
    • date -s "2023-7-11 15:20:00"
    • date MMDDhhmm[[CC]YY][.ss]  ex) date 051609502019.15

 

2. cal

: 달력 확인 

 

3. man

:  Manual Page, 명령어가 기억자니 많을 때 참고 가능

 

4. id

: 현재 로그인한 계정 확인 

(= whoami, who am i)

 

5. clear

: 터미널, 콘솔 화면을 지워준다(정리하는 개념)

 

6. history

: 사용했던 명령어 목록 출력 (clear로 화면이 지워졌을 경우 사용하면 좋다), .bash_history라는 디렉토리에 기록됨

  • history -c : 히스토리 삭제 

 

7. which

: 실행 파일이 저장되어 있는 경로를 알려주는 명령어 

 

8. uname 

: Unix name, 시스템(커널) 정보를 출력해주는 명령 

    • uname -a: 모든 정보를 출력 

 

9. alias, unalias

: 별명을 새로 설정, 삭제 , 길거나 헷갈리는 경우 쉬운 명칭으로 만들어 사용 

 

 

10. ls

: 디렉토리 목록 보기 

  • ls: 옵션 없이 파일/디렉토리 이름만 출력 
  • ls -l: 파일 디렉토리에 대한 자세한 정보 출력 (= ll)
  • ls -a: 숨김 파일까지도 출력 
  • ls -al: 숨김 파일 포함하여 자세하게 출력

 

 

11. poweroff, init 0, shutdown 

: 콘솔, 터미널을 종료

  • poweroff, init 0, shutdown now: 즉시 종료
  • shutdown + [숫자]: [숫자]분 뒤에 종료 
    • shutdown = shutdown +1  

 

12. reboot, init 6, shutdown -r

: 콘솔, 터미널을 재부팅

  • shutdown -r now: 즉시 재부팅 (= reboot, init 6)
  • shutdown -r + [숫자]: [숫자]분 뒤에 재부팅

 

 

힘들지만 오늘도 해낸 나를 위한 한 마디, 

"If you're going through hell, keep going", Winston Churchill