본문 바로가기
EWHA_2nd grade/리눅스실습프로젝트

Chap2 - 기본 명령어, 패키지 관리

by 대학기록 2025. 3. 31.

리눅스 OS 종류

  • Redhat(레드햇) : RPM 패키지 관리 시스템 사용 / yum 명령어를 통해 소프트웨어 업데이트 / 가격이 비쌈 / 배포판: CentOS, 페도라
  • Debian(데비안) : APT 페키지 매니저 사용 / 다른 패키지와 의존성 확인 가능 / 어려움 / 배포판 : 우분투 
  • openSUSE(수세) : Yast 시스템 관리자 사용 / 저장소가 많지 않음 / 배포판 : 슬렉웨어 계열 

 
 
 
리눅스의 장단점?

  • 공개형 오픈소스 운영체제 (참고자료가 많음)
  • 다중 사용자 및 다중 처리 시스템
  • 가상 터미널 환경 지원 + 다양한 파일 시스템 지원
  • Windows에 비해 다루기 어려움
  • 문제 발생시 트러블 슈팅이 어려움 

 
 
 
리눅스 기본 구성

  • 사용자 프로그램 : 사용자가 웹 서버, DB 서버 ...을 이용해서 입력을 한다. (ex. 카카오톡, 네이버, 구글..)
  • 쉘(shell) : 사용자의 명령을 커널에서 이해할 수 있도록 변환하여 전달(사용자 명령어 해석기)
  • Kernal(커널) : 리눅스 운영체제의 핵심 / 시스템의 하드웨어를 제어 / 쉘과 프로그램을 통해 명령 수신(사용자X)
  • 하드웨어 : 직접적인 입/출력 물리장치 (ex.CPU, 메모리, Disk) / 실제작업수행 / 커널이 제어(low-level이라서)

 
 
 
 
 
 
리눅스 디렉토리 특성
: 전체적인 tree 구조의 형태로 서로 다른 성격과 사용 권한 등에 따라 구분됨.
 

  • / : 최상위 디렉토리, 모든 디렉토리들의 시작점 (root)
  • /bin : 기본적인 명령어가 저장된 디렉토리 (bin 아래에 저장됨 + 새롭게 생성된 것들도)
  • /boot : 부트로더(Boot Loader)가 존재하는 디렉토리 (부팅관련! / 부팅X? -> 여기에 문제있음)
  • /dev : 시스템 디바이스 파일 저장하는 디렉토리 (하드디스크, CD-ROM, USB 등)
  • /etc : 모든 설정 파일 존재 디렉토리 (제일 중요 + 기본적임)
  • /lib : 커널 모듈파일과 라이브러리 파일 디렉토리
  • /proc : 메모리상에 존재하는 가상 파일 시스템
  • /usr : 프로그램 설치 디렉토리
  • /var : 시스템 운용중 생성/삭제 되는 일시적인 데이터 관리 디렉토리 (전반적인 운영사항을 관리)

 


 
 
 
리눅스 명령어(Command)

  • 엄격한 대, 소문자 구분 
  • 명령어의 옵션 사용 가능   ->  더 자세히 나옴 (ex. # ls : 목록보기 / # ls -a : 모든 목록 보여주기)
  • 명령어 자동 입력 가능 (Tab 키)  -> (# mk + Tab 키)
  • 파이프라인( | )을 통해 다양한 형태로 조합되는 명령어 실행 가능 (직렬로 두개의 명령어 수행)
  • 명령어에 대한 Man Page(백과사전)를 통해 명령어 도움말 지원 (# man [명령어] / 나갈때 q 누르기)

 
 
# date : 명령어(현재 시간과 날짜 출력)
- # date --date '2days ago' : 이틀 전의 날짜 출력 (#date: 명령어, --date: 옵션, '2days ago': 문자열)
- # date --date '3 months 1 day' : 3개월 하고 하루 지난 날짜를 출력 
- # date --date '25 Dec' +%j : 올해 크리스마스 날짜를 출력
 
 
 
# mkdir [dir name] : 디렉토리 생성 (mkd + tab)   -->  ex) mkdir test
# cd [dir name] : 디렉토리로 이동   -->  ex) cd test     (하면 test 안으로 이동함)
# touch [file] : 파일 생성   -->  ex) touch file 
 
 
# ls : 디렉토리 내의 파일 목록 확인   -->  ex)  ls file   
- # ls -a : 목록 자세히
- # ls -al : 숨김파일까지 더 자세히 보기
 
 
 
# vi file : 하고 들어가서 'i' 하고 입력 -> esc치고, ':wq'  하고 나오기      (vim file 이 더 편함)
# cat file : vi file 에 있는 내용 출력 
 
 
# cp [원본 file1] [사용할 파일]   ->  파일 복제
# rm [option] [file]  -> 파일 영구 삭제
 
*cd ../../ : '../' 가 뒤로 가기임 
*pwd: 현재 위치, './' : 현재 위치
 
 
 
# find [경로] [-name] [file name]    -->    ex) find ./ -name test.txt  (현재 디렉토리 './'에 존재하는 '-name test.txt' 이른이 'test.txt' 인 파일을 찾음


# mv [file1] [directory] : 특정 파일 이동    -->    ex) mv test.txt ../ ('test.txt' 파일을 한 단계 위로 이동)
#pwd: 현재 디렉토리 위치 표시
 


 
# history | grep mkdir : history 중 'mkdir'만 가져오기  
# head : 1~10번째 라인까지 출력 
# tail : 맨 끝부처 10번째 라인까지 출력
# more : 파일을 화면 단위로
# less : 파일 내용을 페이지 단위로 
 
 
 
 
# su [user name] : 로그아웃 없이 임시로 다른 사용자의 UID, GID 환경을 사용
# sudo -i : 다른 사용자로 명령을 실행(root로 접속!)
# sudo useradd [user name] 도 가능 : root권한을 빌려와서 새로운 user를 생성 가능 
 
# useradd [user name] : 일반 사용자 계정 생성
# passwd [user name] : 사용자의 패스워드 변경 
 
 
 
# who : 누가 몇시에 다녀갔는지 표시
# whoami : '현재 사용자' 가 누군지 표시
 
 
 
# which : 환경변수 Path에 저장되어 있는 경로만을 검색하여 명령어 위치 확인 
-> which ls : 어디 존재? (절대 경로)
#whereis : 경로상의 명령어 위치뿐만 아니라 소스, 메뉴얼 페이지 등이 있는 위치 확인 가능 
 
 
# lsof(list open files) : 시스템에서 열린 파일 목록 확인, 사용하는 프로세스, 디바이스 정보, 파일 정보 등 상세한 정보 출력
# apt-get install lsof
 
 
 
 
 
 
리눅스 Package Manager

  • Package : 시스템 환경에 맞춰 빌드한 실행 파일을 압축한 형태
  • rpm(레드햇에서) : 리눅스에서 사용되는 패키지들을 설치, 제거(관리)를 도와주는 툴
  • yum(레드햇에서) : 저장소에서 패티지 검색하고 다운로드하여 설치
  • apt : ubuntu에서 사용되는 패키지 관리자 

 
 
 
 
RPM 사용방법
- # rpm -ivh [패키지명.rpm] ( --h : 설치 진행 상황 출력)        :i(설치), v(자세한 정보 출력), h(진행사항을 #표시로 보여줌)
- # rpm -qa ( --a : 설치된 패키지 목록 확인)                            :q(조회, query), a(모든 패키지)
- # rpm -Uvh [패키지명.rpm]                         : 업데이트 (U(upgrade), v(자세한 정보 출력), h(진행사항을 #표시로 보여줌)
- # rpm -e [패키지명.rpm]                                                       : 삭제(e(erase)
 
 
YUM 사용방법(그냥 직관적으로 나와있음)
- # yum install [패키지명]                                                                                             - # rpm -ivh
- # yum update      (설치된 패키지 버전 업데이트)                                                       - # rpm -Uvh
- # yum update [패키지명]    (특정 패키지 버전 업데이트)                                           - # rpm -Uvh
- # yum remove [패키지명]    (특정 패키지 삭제 / 의존성 패키지 포함)                        - # rpm -e
- # yum search [패키지명]                                                                                            - # rpm qa
 
 
APT 사용방법(ubuntu에서 사용)
- # apt-get install [패키지명] 
- # apt-get install net-tools traceroute     (설치된 패키지 버전 업데이트)
- # apt-get remove [패키지명]    (특정 패키지 삭제 / 의존성 패키지 포함)
- # apt-get search [패키지명]  ((현재는 없어짐.....,,,))
- # apt-get update [패키지명]    (연결된 패키지 저장소 갱신)
 
 
 
 
 
 
리눅스 데몬(Daemon)
데몬 : 프로세스들을 관리하는 것들 

  • 리눅스 부팅 레벨 : 리눅스 시스템에서 '/etc/rc.d/sysinit/' 스크립트 파일이 실행되어 시스템 초기화 및 부팅 관리
  • 런레벨 0~6번까지 존재 :
  • 런레벨 5번(X11 -> 기본) : 우리는 보통 5번! (윈도우 GUI를 사용하는 다중 사용자 모드로 최근 배포되는 리눅스에서 기본값으로 사용됨.) (+GUI <->CLI(명령어만 입력가능 / 터미널만 나옴))
  • 런레벨 6번(Reboot) : 다시시작 (기본값으로 설정 불가)
  • 런레벨 3번(Full multiuser mode) : 일반적인 다중 사용자 모드 
  • 런레벨 0번(Halt) : 시스템 종료 (기본값으로 설정 불가)

 
 
클라이언트의 요청을 처리, 리눅스 시스템이 구동되는데 필요한 기능을 제공
사용자가 직접적으로 제어하지 않고, 백그라운드를 돌면서 여러 작업을 하는 프로그램 

  • sshd : 원격접속 (다른컴퓨터로)
  • syslog : 시스템 로그 관리 (/bar밑에 저장)
  • network : 네트워크 서비스
  • iptables : 방화벽 (ex. 와이파이 방화벽)
  • httpd : 웹서버 (ex.naver. google)

 



Daemon 백그라운드에서 실행모드 

  • Standalone 모드 : 데몬이 시작되면 계속 프로세스가 실행하고 있으므로 클라이언트의 요청에 즉각 응답 / 자원관리 필요(클라이언트의 서비스 요청이 빈번하기 때문에) / IO(input, output) 늘어나면 Disk 관리필요!(자원 관리 필요) / /etc/init.d 디렉토리에 스크립트 파일로 제어하여 시스템 파일로 제어하여 시스템 부팅시 바로 실행되도록 관리
  • xinetd(extended internet Daemon) 모드 : 클라이언트가 서비스 요청을 가끔하는 데몬을 '/etc/xinetd.conf' 파일에서 관리 (ex.telnet : 원격)