리눅스의 시작과 종료

  • 학습 개요
    운영체제의 부팅 절차를 이애하고 리눅스 시스템의 부팅 과정을 알아보자.
    업스타트 init 데몬의 기능과 수행 과정 및 런레벨에 따른 서비스 실행 과정을 알아보자.
    시스템의 부팅과 종료, 런레벨에 따른 서비스의 활성화 여부, 서비스 데본을 수동으로 시작하거나 종료하기 위한 관리자 명령을 알아보자.
  • 학습 목표
    1. 일반적인 운영체제의 부팅 과정을 설명할 수 있다.
    2. 초기화 데몬의 실행과 런레벨을 설명할 수 있다.
    3. 부팅 시 서비스의 활성화와 운영 중 서비스의 시작/종료 방법을 설명할 수 있다.
    4. 리눅스의 재부팅과 종료 방법을 설명할 수 있다.

운영체제의 부팅

부팅 과정

전원은 켜고 로그인 프롬프트가 나올때 까지 과정.
(BIOS 기반 X86 시스템과 MBR(Master Boot Record)방식의 컴퓨터를 가정함)

  • ROM BIOS의 펌웨어가 실행됨
    • 하드웨어 검사 후, 부트 로더를 적재
  • MBR에 있는 부트 로더가 실행 됨
    • 파티션 테이블을 조사하여 부팅 가능한 파티션을 찾음
    • 리눅스의 부트로더인 GRUB을 찾아 적재함
    • GRUB은 그래픽 인터페이스와 멀티 부팅을 지원함
  • 커널 이미지와 initramfs를 로드
    • 커널 이미지는 /boot/vnlinux-
    • initramfs는 부팅과정에서 필요한 임시 램 파일 시스템
  • 커널의 실행
    • 하드웨어를 점검하고 초기화함
      • 메모리, 프로세서, 저장장치, 주변장치 등
      • 디바이스를 찾고 디바이스 드라이버를 로드함
    • 루트 / 파일 시스템을 마운트하고 검사함
    • 커널은 /sbin/init 프로그램을 실생시키고 제어를 넘김
      • init 프로세스는(pid=1) 시스템 운영을 위한 나머지 초기화 과정을
      • init은 부팅이 끝난 후에도 계속 수행됨

(이미지로 한번 더 정리해야 할 듯 하다)

초기화 데몬

전통적 init 데몬

  • System V init 데몬이라고 함.
  • 런레벨 (runlevel)에 기초하여 순차적으로 서비스를 실행하는 방식
    • 런레벨에 따라 실행/중단 되어야 하는 서비스가 정해짐
  • 시간이 오래 걸리며, 복잡한 초기화 스크립트로 인해 새로운 하드웨어나 서비스의 등장에 효율적인 대처가 어려움
    • 안드로이드등 소형 기기에 linux를 사용하면서 불편함이 생기게 됨.

업스타트 init 데몬systemd 데몬

  • 이벤트 기반으로 서비스를 실행하는 방식
  • 복잡한 스크립트가 간단한 설정 파일들로 대체됨
  • Upstart는 Ubuntu에서 개발 되어 2006년에 포함되었고 RHEL에서 채택됨
  • systemd 데몬은 2011년 Fedora에서 채택되었음
  • RHEL7과 SUSE, Ubuntu 16에서 systemd가 Upstart를 대체함

init 프로세스

  • 업스타트는 /sbin/init 데몬으로 구현됨
  • 모든 사용자 프로세스의 최상위 조상 프로세스 (PID-1)
    • ps -e, ps ax 명령으로 확인 가능
  • 나머지 부팅 과정, 시스템 초기화 작업을 실행함
    • 사용자 환경을 준비함. 시스템 운영을 위한 서비스 프로그램의 실행 등
  • 계속 수행되며 시스템 운영을 관리하고 셧다운을 처리함
    • 사용자 프로세스의 정리, 로그아웃 후 로그인 서비스의 제공등을 함
  • /etc/init/ 디렉토리에 있는 'job 설정파일'을 읽음
    • job 설청 파일의 확장자는 .conf
    • init 데몬이 실행하는 job(실행 파일 || 셸 스크립트)이 정의 되어 있음
      • 이벤트가 발생할 때 상응하는 job을 시작하거나 중지시킴
  • '전통적 init 데몬'에서는 /etc/inittab 파일을 환경 설정 파일로 사용했음
    • 현재는 초기 런레벨을 설정하는 용도로만 사용됨
    • 이 파일에 업스타트 초기화 과정을 설명하는 내용이 있음
  • initctl 명령
    • job의 상태를 확인하거나 수동으로 시작/중지 시키는 명령
    • initctl command job
    • initctl list는 모든 job의 상태를 보여줌. (list 외에는 사용할 일이 없을것이다.)
    • initctl start job 또는 init stop job을 사용할 수 있음

환경 설정 파일과 스크립트

'upstart init deamon'은 기존 방식과 호환되도록 설계됨.

  • /etc/init/rcS.conf
    • 부팅 시 한번 실행되며 시스템 초기화와 관련이 있는 내용이 설정 되어 있음.
    • 주요 작엄은 초기 런레벨을 읽고 /etc/rc.d/tc.sysinit 스크립트를 실행하는 것.
    • 호스트명 설정, 시스템 점검, 파일 시스템의 마운팅, LVM 장치 활성화, 쿼터 설정 등
      서버가 작업을 실행하는 데 필요한 모든 작업을 수행함
  • /etc/init/rc.conf
    • 부팅되거나 런레벨이 바뀔 때 필요한 서비스를 시작시키거나 필요 없는 서비스를 중단시키기 위해 스크립트를 실행함.
    • 주요 작업은 /etc/rc.d/rc runlevel을 실행하는 것
  • /etc/inittab
    • 부팅 시 정해지는 초기 런레벨이 정의된 파일
    • '업스타트 init 데몬'을 사용하는 경우 초기 런레벨 외의 다른 설정은 의미가 없음
  • etc/rc.d/rc.local
    • 결과적으로 런레벨 2, 3, 5에서 가장 마지막에 실행되는 스크립트

init 프로세스와 런레벨

  • 초기 런레벨은 /etx/inittab 파일에서 id:5:initdefault:와 같이 설정 되어 있다.
  • 런레벨이 5로 부팅 되는 겨웅
    • /etc/rc.d/rc5.d/ 디렉토리에 존재하는 스크립트 파일이 실행됨
    • K로 시작하는 스크립트는 해당 서비스의 종료를 위한 것.
    • S로 시작하는 스크립트는 해당 서비스의 시작을 위한 것.
    • 이런한 파일은 /etc/tc.d/init.d/ 디렉토리에 돈대하는 실제 스크립트 파일에 대한 심벌릭 링크임
  • 런레벨 2,3,5에서 가장 마지막에 실행되는 스크립트는 S99local 이 가리키는 /etx/rc.d/rc.local
    • 관리자가 원하는 특별한 초기화 작업을 추가할 수 있음.

런레벨

  • 0 : 시스템이 종료될 때 사용되는 레벨로 기본값으로 설정해서는 안됨.
  • 1 : 단일 사용자 모드로, 로그인 과정 없이 root 사용자로 로그인 되며 콘솔에서 시스템 점검이나 복구를 위한 관리자 모드로 사용됨.
    명령 행 인터페이스가 제공되며 네트워크 서비스는 제공되지 않음
  • 2 : 기본적으로 네트워크 서비스를 제공하지 않는 다중 사용자 모드
  • 3 : 모든 네트워킹을 지원하는 다중 사용자 모드.
    리눅스 초기 시절에 보편적으로 사용되었던 레벨. CLI만 지원함
  • 4 : 사용하지 않음
  • 5 : 그래픽 사용자 환경을 제공하는 다중 사용자 모드 최근 배포판은 기본으로 설정됨
  • 6 : 시스템을 재부팅할 때 사용되는 레벨로 기본값으로 설정해서는 안 됨

telinit

  • 런레벨을 바꾸는 관리자 명령
  • telinit runlevel
    • telinit 3은 런레벨을 변경하며 텍스트 모드만 지원함.
    • telinit 0 -> 종료, telinit 6 -> 재부팅
  • runlevel
    • 이전 런레벨과 현재 런레벨을 확인하는 명령

chkconfig

부팅 시 런레벨에 따른 시스템 서비스의 활성화 여부를 확인하거나 변경하는 명령

  • chkconfig [--list] [service]

    • chkconfig --list는 각 런레벨에서 모든 서비스의 활성화 여부를 알려줌

    •   [ec2-user@ip-172-31-45-8 etc]$ chkconfig
      
        Note: This output shows SysV services only and does not include native
              systemd services. SysV configuration data might be overridden by native
              systemd configuration.
      
              If you want to list systemd services use 'systemctl list-unit-files'.
              To see services enabled on particular target use
              'systemctl list-dependencies [target]'.
      
        netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
        network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
        [ec2-user@ip-172-31-45-8 etc]$
    • chkconfig [--list levels] service <on|off>

      • 특정 런레벨에서 서비스의 활성화 여부를 지정
      • chkconfig --level 345 httpd on은 런레벨 3,4,5에서 httpd 서비스를 활성화 시킴

service 명령

시스템 운영 중에 /etc/rc.d/init.d/ 디렉토리에 존재하는 초기화 스크립트를 수동으로 실행 또는 중지 시키는 관리자 명령

  • service script command
    • service httpd start는 httpd를 시작 시킴
    • /etc/rc.d/init.d/httpd start도 같음
    • command는 start, stop, restart, reload, status 중 하나
  • service --status-all
    • 모든 초기화 스크립트의 상태를 출력함
  • 데스크톱 메뉴에서 '시스템>관리>서비스'를 실행하면 나오는 '서비스 설정 창'에서 서비스의 초기 설정(활성화 여부)과 실행의 시작/중지를 시킬 수 있음.

시스템 종료

개인 사용자의 로그아웃

  • 계정의 사용을 마치고 빠져 나오는 것
  • 데스크톱 환경에서 '시스템 > 로그아웃'
  • 로그인 셸에서 logout 또는 exit 명령

시스템의 종료

  • 관리자가 시스템을 안전하게 셧다운 하는 것
    • 접속중인 사용자에게 시스템의 종료를 알림
    • 사용자의 로그인을 차단하고 종료함
  • 데스크톱 환경에서 '시스템 > 끄기 > ...'
    • '다시 시작', '취소', '끄기'

shutdown

  • 시간을 정해 시스템을 종료하는 명령
  • shutdown [options] time [message]
  • option
    • -r : 재부팅
    • -c : 셧다운 취소
    • -k : 경고 메세지만 보냄
    • shutdown -r +10
  • time
    • 종료시간으로 절대시간(24시간 포멧의) 형식, +10은 10분 후
    • now는 즉시
    • shutdown -h now

시스템의 종료 절차

  • 실제 init 프로세스를 통해 런레벨을 바꾸어 셧다운이 처리됨
    • init 프로세스는 모든 프로세스에게 종료를 알림
    • 각 프로세스가 스스로 종료하도록 TERM 시그널을 보냄
    • 종료하지 않은 프로세스에게 강제 종료를 위한 KILL 시그널을 보냄
    • 시스템 파일을 잠그고 파일 시스템을 언마운트 함
    • 버퍼에 있는 데이터를 파일 시스템에 기록함 (sync)
    • 시스템 호출을 통해 커널에 재부팅 또는 종료를 요청함
  • -h 또는 -r 옵션을 사용하지 않으면 단일 사용자 모드로 부팅됨.
  • 종료를 위해 halt 명령을, 재부팅을 위해 reboot 명령을 사용할 수 있음

데스크톱

데스트톱 환견

  • GUI를 제공하는 사용자 환경
    • 그래픽 윈도우, 아이콘, 툴바 ,메뉴, 위젯 등을 마우스나 키보드로 조작
  • 대부분의 데스크톱은 X윈도우 시스템에 기반
  • 시각적으로 다양한 스타일의 데스크톱이 존재함
    • 일반적으로 서버로 사용하는 리눅스는 CLI만 제공한다.

GNOME

Red Hat 계열의 리눅스에서 기본 GUI

  • 단순함, 편의성, 안정성에 초점
    • 기본적으로 상단에 메뉴, 하단에 패널이 있음
    • 오른쪽 하단에서 2개의 작업 공간을 선택할 수 있음(가상윈도우)
  • 터미널 창에서 gnome-control-center&을 실행하면 제어판이 나옴

KDE

K 데스트톱이라고 하며 MS Windows와 비슷

  • 다양한 프로그램을 통합적인 모습으로 보여줌
  • yum -y groupinstall 'KDE 데스크탑'으로 설치 한다고?
  • 로그인 할때 GNOME || KDE 선택 가능함.
728x90
반응형

'OS > Linux' 카테고리의 다른 글

[Linux] vi 사용 텍스트 편집  (0) 2020.10.25
[Linux] 사용자 관리  (0) 2020.10.25
[Linux] 파일과 디렉토리  (0) 2020.10.24
[Linux] Shell 사용하기  (0) 2020.10.16
[Linux] 리눅스 설치준비 및 표준 디렉토리  (0) 2020.10.16

파일과 디렉토리

  • 학습 개요
    리눅스에서는 모든 것이 파일로 취급되어 디렉토리나 디바이스도 파일로 취급한다.
    파일의 종류를 살펴보고 파일과 디렉토리의 접근권한이 가지는 의미를 이해해 보자.
    파일과 디렉토리를 다루기 위한 쉘 명령을 익히고 텍스트 파일의 출력을 위한 명령을 알아보자.

  • 학습 목표

    1. 리눅스에서 파일의 종류를 나열할 수 있다.
    2. 파일과 디렉토리를 조작하는 명령의 사용법을 익힌다.
    3. 파일과 디렉토리의 접근권한에 관해 설명할 수 있다.
    4. 파일의 내용을 확인하는 명령을 나열하고 설명할 수 있다.

파일 시스템 탐색

파일 시스템

  • 운영체제가 디스크(파티션)상에 파일을 구성하는 방식
  • 파일과 디렉토리의 집합을 구조적으로 관리하는 체계
  • 다양한 형식의 파일 시스템이 존재
  • 리눅스는 전체 파일 시스템을 개의 트리구조로 관리
    • 1개의 루트(/) 디렉토리만 있음.

ls

  • 파일과 서브 디렉토리 목록을 나열.
    • 파일(또는 디렉토리)가 가지는 속성까지 확인할 수 있음.
  • ls [options] [names]
    • ls directory
      • 디렉토리에 존재하는 파일과 서브 디렉토리의 정보 출력.
    • ls file
      • 해당 파일의 정보를 출력
  ➜  UNIX git:(master) ✗ ls
  Lecture                        중간과제

  ➜  UNIX git:(master) ✗ ls -l
  total 0
  drwxr-xr-x   7 jeahasorrowkissed  staff  224 Oct 19 22:06 Lecture
  drwxr-xr-x  11 jeahasorrowkissed  staff  352 Oct 15 17:46 중간과제

  ➜  UNIX git:(master) ✗ ls -l Lecture
  total 80
  -rw-r--r--  1 jeahasorrowkissed  staff   9161 Oct 16 16:47 01_LINUX.md
  -rw-r--r--  1 jeahasorrowkissed  staff   5615 Oct 16 18:06 02_Install_Linux.md
  -rw-r--r--  1 jeahasorrowkissed  staff  14176 Oct 16 19:53 03_Use_Shell.md
  -rw-r--r--  1 jeahasorrowkissed  staff   1473 Oct 19 22:13 04_File_And_Directory.md

  ➜  UNIX git:(master) ✗ ls -l ./Lecture/01_LINUX.md
  -rw-r--r--  1 jeahasorrowkissed  staff  9161 Oct 16 16:47 ./Lecture/01_LINUX.md

옵션

짧은 옵션 긴 옵션 설명
-a --all 모든 파일을 보여줌 점(.)으로 시작하는 숨김 파일도 보여줌
-d --directory 디렉토리 자체에 대한 정보를 보여줌
-F --classify 우측에 파일의 종류를 알려주는 문자를 붙임. 실행파일은 *, 디렉토리는 /, 심볼릭 링크는 @
-l --format=long 긴 포맥으로 결과를 보여줌
-R --recursive 재귀적으로 수행되는데 서브 디렉토리의 내용도 나열함
-S --sort=size 파일의 크기 순서로 결과를 보여줌
-t --sort=time 최종 수정 시간 순으로 보여줌

파일의 종류

  • 정규 파일
    • 데이터를 저장하는 데 주로 사용
    • 각종 텍스트 파일, 실행 파일, 이미지 파일 등 리눅스에서 사용하는 대부분의 파일
    • 실행 파일이나 이미지 파일의 경우 바이너리 형태로 저장되어 바이너리 파일이라고 함
  • 디렉토리
    • 리눅스에서 디렉토리도 파일로 취급
    • 해당 디렉토리에 저장된 파일이나 하위 디렉토리에 대한 정보가 저장
  • 심볼릭 링크
    • '소프트 링크'라고도 함
    • 원본 파일에 대한 링크로서 다른 이름으로 파일명을 지정한 것
      • 윈도우 바로가기와 비슷한 것
  • 장치 파일
    • 리눅스에서 프린터, CD-ROM, HDD, 키보드 등과 같은 각종 장치를 파일로 취급 함
    • 블록 디바이스 파일과 문자 디바이스 파일로 구분 됨

file

파일의 종류를 알려주는 명령

  ➜  UNIX git:(master) ✗ file ./Lecture/01_LINUX.md
  ./Lecture/01_LINUX.md: UTF-8 Unicode text

pwd

절대 경로 방식으로 현재 작업 디렉토리를 알려줌

➜  UNIX git:(master) ✗ pwd
/Users/Jeaha/git/KNOU/3-2/UNIX

cd

작업 디렉토리를 이동

  • 디렉토리를 지정하지 않으면 사용자의 홈 디렉토리로 이동함
  • cd [directory]
➜  UNIX git:(master) ✗ cd Lecture
➜  Lecture git:(master) ✗

파일과 디렉토리 관리

mkdir

  • 디렉토리를 만드는 명령
  • mkdir [options] directories
  • 옵션
    • -p 필요한 경우 상위 디렉토리를 만듦
    • -m 디렉토리를 만들면서 접근 권한을 설정

rmdir

  • 디렉토리 삭제 명령
    • 비어있는 디렉토리만 삭제할 수 있음
    • 조건없이 디렉토리를 삭제하려면(모든 파일과 하위 폴더를 포함) rm -r dir 또는 rm -rf dir을 사용해야 함(위험하다.)
  • 옵션
    • -p 비어있는 디렉토리를 삭제하면서 부모 디렉토리가 비게 되는 경우 사용

cp

  • 파일이나 디렉토리를 복사
  • cp [options] file1 file2
    • cp -i file1 file2
    • 대상 파일이 존재 한다면 덮어쓰기 함.
  • cp [options] files directory
    • 마지막 인자가 디렉토리인 경우
    • 여러 파일을 지정된 디렉토리에 같은 이름으로 복사
    • cp file1 file2 dir1
  • cp -r [options] dir3 dir2
    • 디렉토리응 재귀적으로 복사할 때 -r 옵션 사용
    • 대상 디렉토리가 존재하는 경우, 그 곳에 디렉토리 자체가 복사됨

mv

  • 파일의 이름을 변경하는 명령
  • 또는 다른 디렉토리로 이동하는 명령
  • mv [options] source target
    • mv file2 file2
    • 대상 파일이 존재한다면 덮어쓰기가 수행됨
    • mv dir1 dir2
    • 디렉토리의 이름을 변경함
      • 대상 디렉토리가 존재한다면 서브디렉토리로 이동됨.
  • mv [options] files directory
    • 마지막 인자가 존재하는 디렉토리인 경우
    • 여러 파일을 지정된 디렉토리로 이동함
    • mv file1 file2 dir1

rm

  • 파일을 삭제
    • 기본적으로 파일만 삭제함
  • rm [options] files
    • 파일을 삭제할 때 조심해야 함
    • alias rm='rm -i'를 해두는 것도 좋은 방법임
  • 옵션
    • -r 디렉토리와 하위 를 모두 함께
    • -i 삭제 전에 물어봄
    • -f 물어보지 않고 무조건 삭제

파일의 접근 권한

  • 권한이 없는 사용자의 접근을 막기 위해 접근권한을 설정함
    • 사용자 부류에 따라 읽기/쓰기/실행 권한을 각각 설정함
  • 사용자 부류
    • u 소유자
    • g 그룹
    • o 기타
  • 권한
    • r 읽기
    • w 쓰기/수정/삭제/이름바꾸기
    • x 실행

디렉토리의 접근 권한

  • 권한
    • r : 디렉토리가 가진 파일과 서브 디렉토리의 목록 보기
    • w : 파일과 디렉토리를 만들거나 삭제
    • x : 디렉토리로 이동하거나 디렉토리에서 프로그램 실행 또는 파일의 메타데이터 보기
  • 디렉토리를 자유롭게 사용하려면 읽기/쓰기/실행 권한을 모두 가져야 함
    • 적어도 읽기/실행 권한을 가지고 있어야 해당 디렉토리로 이동하거나 해당 디렉토리에서 ls -l을 실행할 수 있음.
➜  UNIX git:(master) ✗ ls -ld /home ~root
lrwxr-xr-x  1 root  wheel   25 Oct 22 11:07 /home -> /System/Volumes/Data/home
drwxr-x---  7 root  wheel  224 Apr 19  2020 /var/root

chmod

파일의 소유자가 파일의 접근 권한을 변경하는 명령

  • chmod [options] mode files
    • -R 옵션을 디렉토리에 적용하면 모든 파일과 서브 디렉토리까지 권한을 변경
  • 8진수 모드
    • 읽기(r)은 4, 쓰기(w)는 2, 실행(x)는 1
    • 예: rwxr-xr-x -> 111101101 -> 755
    • chmod -R 755 dir1
  • 기호 모드
    • 형식은 [ugoa][+-=][rwx]
    • ugoa는 각각 user, group, other, all을 의미. 생략 하면 all
    • +-=는 각각 권한의 추가, 제거, 지정을 의미함.
    • chmod u+x file1
    • chmod u=rwx,g=rx,o=x file2

umask

  • 접근권한의 기본값을 출력하거나 설정하는 명령
    • 보통 /etc/bashrc에 설정되어 있음
  • umask [-S][mask]
    • 단순히 umask 또는 umask -S 명령을 실행하면 현재 기본값을 알 수 있음
    • -S 옵션은 기호모드로 결과를 보여줌
    • umask 002 마스크 값이 라는 것은 -------w-, 즉 기타 사용자에게 쓰기 권한을 부여하지 않겠다는 것.
    • 결국 마스크 값이 002 라는 것은 접근 권한을 주는것.
    • 파일의 경우 실행 권한은 부여되지 않으며 접근 권한은 664가 됨.
  • 참고로 touch file 명령을 파일의 접근/수정 시간을 현재 시간으로 변경하며 파일이 존재하지 않으면 파일을 생성함.

chown

root 사용자가 파일이나 디렉토리 소유자를 변경하는 명령

  • 파일 또는 디렉토리는 그것을 생성한 사용자 계정과 그룹이 곧 소유자와 소유 그웁으로 설정됨.
  • chown [options] newowner files
  • newowner에 소유자만 주어지면 소유자를 변경하는것.
    • 소유자:그룹 또는 소유자.그룹 의 형태로 지정할 수 있음.
      • 소유자가 생량디면 :그룹 변경이 없어지는 것이며, 그룹이 생략되면 소유자: 소유자와 같은 그룹으로 정해짐
    • -R 옵션을 사용하여 디렉토리에 재귀적으로 적용할 수 있음

ln

  • 파일에 다른 이름으로 연결(link)하는 명령
  • ln [options] 원본파일명 [대상파일명]
  • 기본적으로 하드 링크를 만들며, -s 옵션을 사용하면 심벌릭 링크가 만들어짐
  • 하드 링크(hard link)
    • 하나의 파일에 다른 이름을 부여하는 것
    • 원본 파일의 링크 카운트가 증가함
    • 다른 파일 시스템에는 링크할 수 없음
  • 심벌릭 링크
    • 윈도우 '바로가기'와 같은 역할의 독립적 파일
    • 다른 파일 시스템에 링크를 만들 수 있음
    • 원본을 삭제하면 심벌릭 링크는 의미가 없어짐
    • 디렉토리의 경우, 심벌릭 링크만 만들 수 있음
  • 하드 링크와 심벌릭 링크의 차이
➜  Lecture git:(master) ✗ ll
total 96
-rw-r--r--  1 jeahasorrowkissed  staff   8.9K Oct 16 16:47 01_LINUX.md
-rw-r--r--  1 jeahasorrowkissed  staff   5.5K Oct 16 18:06 02_Install_Linux.md
-rw-r--r--  1 jeahasorrowkissed  staff    14K Oct 16 19:53 03_Use_Shell.md
-rw-r--r--  1 jeahasorrowkissed  staff   9.9K Oct 22 11:41 04_File_And_Directory.md
➜  Lecture git:(master) ✗ ls -l 04_File_And_Directory.md
-rw-r--r--  1 jeahasorrowkissed  staff  10115 Oct 22 11:41 04_File_And_Directory.md
➜  Lecture git:(master) ✗ ln 04_File_And_Directory.md 04.hl
➜  Lecture git:(master) ✗ ln -s 04_File_And_Directory.md 04.sl
➜  Lecture git:(master) ✗ ls -li 04*
37003925 -rw-r--r--  2 jeahasorrowkissed  staff  10115 Oct 22 11:41 04.hl
37110394 lrwxr-xr-x  1 jeahasorrowkissed  staff     24 Oct 22 11:45 04.sl -> 04_File_And_Directory.md
37003925 -rw-r--r--  2 jeahasorrowkissed  staff  10115 Oct 22 11:41 04_File_And_Directory.md

37003925 -rw-r--r-- 2 jeahasorrowkissed staff 10115 Oct 22 11:41 04_File_And_Directory.md
의 2는 링크의 갯수를 의미함.
37110394 lrwxr-xr-x 1 jeahasorrowkissed staff 24 Oct 22 11:45 04.sl -> 04_File_And_Directory.md
의 ->는 대상 파일의 심볼릭 링크임을 의미함.

파일의 내용 확인

more

  • 파일의 내용을 한 화면 단위로 출력하는 명령
    • 한 화면을 보여준 상태에서 멈춤
  • more [options] file
    • 한 화면에 모두 보여줄 수 없을 때 --More--(69%)와 같은 메세지가 나옴
    • space bar를 누르면 다음 화면으로 이동
    • enter를 누르면 한라인씩 이동
    • q를 누르면 종료
    • more -20 +10 /etc/services
      • 10번째 라인부터, 20라인 단위로 보여줌
    • 한방향으로만 스크롤 가능.

less

  • more 명령의 개선된 버전 양방향 스크롤 가능
  • 위 또는 아래로 스트롤 가능
    • page up, page down, up, down등
  • 그외 내부 명령이 있음
    • 라인/화면 단위 이동, 라인/퍼센트로 위치 지정, 검색 등

head

파일의 맨 앞 부분을 10라인(기본 값) 출력하는 명령

  • head [options][files]
    • 옵션 -n 숫자 또는 -숫자 를 사용하면 보고싶은 라인 수를 변경할 수 있음
    • head -n 5 /etc/passwd
    • head -3 /etc/*.conf

tail

파일의 마지막 부분을 10라인(기본값) 출력하는 명령

  • tail [options] [files]
    • head 명령과 같은 옵션을 사용할 수 있으며,
      옵션 -n + 숫자를 사용하면 해당 라인부터 출력함
    • -f 옵션을 사용하면 변화하는 파일의 내용을 계속 감시함.
      • tail -f /log/catalina.out

cat

하나 또는 여러 파일을 연결(concatenate) 시켜 화면에 출력

  • cat [options] [files]
    • 파일을 지정하지 않으면 표준 입력으로부터 읽음
    • cat > file을 수행하여 텍스트 파일로 만들 수 있음
    • 여러 파일의 내용을 연결시킬 때 사용할 수 있음 (리다이렉션 활용)
    • 옵션 -n을 사용하면 라인 번호를 붙일 수 있음
➜  Lecture git:(master) ✗ cat > cat1.txt
asdf
1234
➜  Lecture git:(master) ✗ cat > cat2.txt
cat2 22222
eee222^C
➜  Lecture git:(master) ✗ cat cat2.txt
cat2 22222
➜  Lecture git:(master) ✗ cat cat*.txt > total.txt
➜  Lecture git:(master) ✗ cat total.txt
asdf
1234
cat2 22222
➜  Lecture git:(master) ✗ ll
total 144
-rw-r--r--  1 jeahasorrowkissed  staff   8.9K Oct 16 16:47 01_LINUX.md
-rw-r--r--  1 jeahasorrowkissed  staff   5.5K Oct 16 18:06 02_Install_Linux.md
-rw-r--r--  1 jeahasorrowkissed  staff    14K Oct 16 19:53 03_Use_Shell.md
-rw-r--r--  2 jeahasorrowkissed  staff    13K Oct 22 12:08 04.hl
lrwxr-xr-x  1 jeahasorrowkissed  staff    24B Oct 22 11:45 04.sl -> 04_File_And_Directory.md
-rw-r--r--  2 jeahasorrowkissed  staff    13K Oct 22 12:08 04_File_And_Directory.md
-rw-r--r--  1 jeahasorrowkissed  staff    10B Oct 22 12:09 cat1.txt
728x90
반응형

'OS > Linux' 카테고리의 다른 글

[Linux] 사용자 관리  (0) 2020.10.25
[Linux] 시작과 종료  (0) 2020.10.24
[Linux] Shell 사용하기  (0) 2020.10.16
[Linux] 리눅스 설치준비 및 표준 디렉토리  (0) 2020.10.16
[Linux] 리눅스 란  (0) 2020.10.16

리눅스 설치

  • 학습 개요
    CentOS Linux 배포판의 설치를 위한 준비 작업을 알아본다.
    리눅스 파티션의 의미, 장치이름과 주요 표준 디렉토리의 종류와 용도를 살펴본다.
    CentOS의 설치 과정을 학습하고 설치함으로 실습을 준비한다.

  • 학습 목표

    1. 리눅스 설치를 위한 준비 과정을 설명할 수 있다.
    2. 파티션, 장치이름, 리눅스 표준 디렉토리에 관해 설명할 수 있다.
    3. CentOS 운영체제를 설치할 수 있다.

리눅스 실습 환경의 준비

CentOS

  • RHEL의 소스코드를 이용해 만들어진 무료 배포판.
  • 상용 RHEL과 호환되나 운영상의 문제가 생길 때 스스로 해결해야 함.
  • 웹 서버나 데이터베이스 서버용 컴퓨터로 널리 사용됨.
  • 리눅스 마스터 1급 2차 : CentOS 6.9 또는 Fedora 13 버전으로 시험 진행.

CentOS 설치를 위한 하드웨어 사양

  • i386 || x86_64 프로세서
  • GUI를 사용하려면 512M이상의 RAM과 5G 이상의 하드디스트가 필요함.

설치전 준비 작업

추후 정리 후 링크 연결 하겠음.
ISO 이미지 파일을 가상머신 SW에 설치하거나 설치 DVD를 만들어 설치할 수 있음.

하드디스크의 비어있는 파티션에 설치

  • 기존 운영체제에서 사용하지 않는 파티션이 있는지 확인.
    • 리눅스용 파티션을 준비하는 것.
  • 리눅스 설치 공간은 기존의 운영체제 공간과 구분됨.
  • 부팅시 윈도우와 리눅스 중 선택할 수 있음(멀티부팅)

가상머신 SW를 이용하여 설치

  • 가상머신 소프트웨어 설치 후 가상머신에 리눅스 설치
  • 게스트 운영체제로 설치됨.

가상머신에 설치하는 방법으로 추후 정리하여 링크로 연결 하겠음.

저장 장치 이름과 표준 디렉토리

파티션

  • 하드디스크를 논리적으로 나눈 구역.
  • 파티션 별로 파일 시스템을 만들 수 있음.
  • 윈도우에서는 각 파티션 마다 각각의 드라이브로 지정함 (C:, D:, ...)
  • 리눅스는 오직 개의 루트 디렉토리(/)만을 가짐.
    • 파티션은 푸트 파일 시스템의 특정 디렉토리에 부착됨.
      • 저장장치를 사용하려면 해당 저장장치 이름을 파일 시스템의 특정 디렉토리에 마운트 시켜야 함.
    • 예) 장치이름/dev/sdb1 을 /home에 부착
  • Linux는 하드디스트나 주변 장치를 모두 파일로 취급함.
  • 네트워크 소켓이나 프로세스, 모든 주변 장치 등을 파일처럼 다룸.

장치 이름

  • 리눅스에서 사용하는 하드디스트 장치 또는 파티션의 이름
  • IDE 디스크 : 이름에 'hd'를 붙임.
    • /dev/hda, /dev/hdb, ...
  • SCSI 디스트 : 이름에 'sd'를 붙임
    • /dev/sda, /dev/sdb, ...
  • 물리적인 하드디스크가 추가될 때 알파벳 순서대로.
  • 파티션 번호는 숫자를 1부터 차례대로 붙임
    • /dev/hda1, /dev/hda2, ...
  • CD/DVD
    • /dev/sr0, /dev/sr1, ...

리눅스 표준 디렉토리

다양한 배포판이 등장함으로써 디렉토리 구조나 사용방법의 통일성을 위해 디렉토리 표준이 생겼음.
거의 모든 리눅스 배포판이 비슷한 디렉토리 구조를 갖게 됨.

/ -               : 루트 디렉토리
  |                 * 전체 파일 시스템의 최상위 경로
  +- bin          : 바이너리 디렉토리
  |                 * 기본적인 명령의 실행 파일들이 위치
  +- sbin         : 바이너리 디렉토리
  |                 * 시스템 관리와 관련된 명령의 실행 파일이 위치
  +- boot         : 부트 디렉토리
  |                 * 리눅스가 부팅될 때 사용되는 설정 파일이 위치
  |                 * 커널 이미지(vmlinz)와 부트 로더 설정 파일을 포함
  +- dev          : 디바이스 디렉토리
  |                 * 장치를 접근하는데 사용되는 '디바이스 파일'이 위치
  +- etc          : 시스템 설정 파일 디렉토리
  |                 * 초기화 스크립트, 사용자 정보 등 시스템의 중요한 환경 설정 파일이 위치
  +- home         : 사용자 계정 디렉토리
  |                 * 사용자 계정의 홈 디렉토리가 만들어지는 디렉토리 예) /home/jeaha
  |                 * 사용자의 홈 디렉토리는 해당 사용자만 사용할 수 있는 독립적인 공간
  +- lib          : 공유 라이브러리 디렉토리
  |                 * 프로그램들이 사용하는 시스템 라이브러리 파일들이 위치
  +- media        : 미디어 디렉토리
  |                 * 이동식 저장장치가 마운트 될 때, 마운트 지점을 제공함.
  +- proc         : 시스템 정보 디렉토리
  |                 * 커널이 사용하는 가상의 파일 시스템
  +- root         : 루트 계정의 디렉토리
  |                 * root 계정의 홈 디렉토리
  +- usr          : 사용자 디렉토리
  |   +- bin      : 여러가지 실행파일
  |   +- sbin     : 여러가지 실행파일
  |   +- include  : 라이브러리 헤더파일
  |   *- lib      : 실행파일을 위한 사용자 라이브러리
  *- var          : 가변 자료 저장 디렉토리
                    * 시스템 운영 중에 필요한 가변 자료가 저장되는 디렉토리
                    * 시스템 작동 로그, 인쇄, 메일 등

리눅스 설치하기

가상머신에 설치하는 방법을 추후 정리하여 링크로 연결 하겠음.

728x90
반응형

'OS > Linux' 카테고리의 다른 글

[Linux] 사용자 관리  (0) 2020.10.25
[Linux] 시작과 종료  (0) 2020.10.24
[Linux] 파일과 디렉토리  (0) 2020.10.24
[Linux] Shell 사용하기  (0) 2020.10.16
[Linux] 리눅스 란  (0) 2020.10.16

리눅스 란

  • 학습 개요
    UNIX 운영체제와 리눅스의 발전 과정을 알아보고 리눅스의 특징을 알아보자.
    GNU 프로젝트와 오픈소스 소프트뤠어 라이센스의 의미를 알아보자.
    또 주요 리눅수 배포판의 특징을 정리해 보자.

  • 학습 목표

    1. 리눅스의 발전사와 특징을 알아본다.
    2. 오픈소스 소프트웨어 라이센스의 종류를 나열해 보자.
    3. 주요 리눅스 배포판의 특징을 설명해 보자.

유닉스와 리눅스

UNIX의 특징

다중 사용자(Multi User), 다중 작업(Multi Thread)을 지원하는 신뢰성 높은 시분할 방식의 운영체제.
운영체제가 C로 작성되었기 때문에 이식성이 좋음.
네트워크 기능에 강력함.
단순화 된 설계, 모듈화된 설계로 기능을 제공함.
파일 시스템 트리가 하나로 통합됨.
셸스크립트로 명령 행 기반의 인터페이스를 사용할 수 있음.

UNIX와 LINUX

  • 리눅스는 UNIX의 무료 공개 버전.
  • 초기의 리눅스는 PC용 운영체제로 개발 되었음. (UNIX는 고성능 혹은 중형 컴퓨터 용으로 제작됨)

UNIX 발전사

  • 최초의 UNIX
    • Multics
      • 1969년 assembly 언어로 작성된 최초의 시분할 운영체제.
    • Unicx -> UNIX
      • 작고 심플한 운영체제로 다시 작성됨.
      • 1973년 대부분이 C 언어로 다시 작성 됨.
  • 대표적인 UNIX 시스템
    • BSD 계열 (버클리) : Free BSD, SunOS
    • System V 계열 (직계) : HP-UX, IBM AIX, Solaris(SunOS가 System 계열로 넘어옴)
    • Linux : 리눅스 커널을 사용하는 운영체제

Linux의 등장

  • 1983년 GNU 프로젝트
    • 리처드 스톨만(MIT연구원)이 UNIX와 유사한 공개 운영체제를 개발하기 위해 GNU 프로젝트를 시작.
    • 소프트웨어 상업화에 반대하고 소스코드의 공유, 자유로운 사용과 배포를 주장.
    • 1985년 GNU 선언문 (Manifesto) 발표.
    • 1989년 GPL을 발표.
    • 현재 Free Software Foundation(FSF)라는 이름으로 활동.
    • GNU 프로젝트에서 만들어진 Util들이 Linux에서 사용 됨.
  • 1991년 Linux Kernel
    • 리누스 토발즈가 리눅스 커널을 작성하여 발표
      • 커널은 하드웨어를 제어하고 응용 프로그램과의 상호작용을 제공하는 운영체제의 핵심임.
    • 개발자인 Linus와 UNIX의 이름을 따서 Linux로 명명함.
  • 1992년
    • 최초의 리눅스 배포판인 MCC Interim 리눅스가 발표됨.
    • 보통 리눅스라 함은 리눅스 커널을 사용한 운영체제(리눅스 배포판)를 의미함.
  • 1998년
    • IBM과 Oracle이 리눅스 지원을 발표함.

리눅스 개요

리눅스 발전상

  • 전 세계 리눅스 사용자는 만명 정도로 추산됨.
  • 유수의 100만 도메인 중 95% 이상이 리눅스를 사용
  • Mac, 안드로이드 운영체제가 리눅스 기반.
  • 슈퍼 컴퓨터의 95%가 리눅스에서 운영됨.
  • 주요 증권 거래소에서 리눅스 서버 사용.
  • 대다수 전자장비에서 리눅스 사용.

리눅스의 특징

  • 다중 사용자와 다중 작업을 지원.
  • 뛰어난 이식성
  • 모듈화 되어 있어 업그레이드 또는 업데이트가 용이함.
  • CUI와 GUI를 지원.
    • Character UI : Shell을 통해 커맨드 입력.
    • Graphical UI : X Window, GNOME, KDE 등의 데스트 톱.
  • 소스코드가 공개죔.
    • 공개 소스로서 빠르게 발전하고 보완됨.
  • 여러 종류의 파일 시스템을 지원.
    • Minix, ext 계열, FAT, FAT32, NTFS, NFS, ISO-9660 등.
  • 효과적인 하드웨어의 활용.(저사양 하드웨어에서도 효율적으로 활용 가능하다)
  • 다양한 응용프로그램과 소프트웨어 개발 환경을 제공.

오픈소스와 라이센스

오픈소스

  • 개발자(저작권자)가 소스코드를 공개하여 누구나 사용, 수정, 공유할 수 있도록 허가람 소프트웨어.
  • 반대 개념은 "proprietary (closed) SW"

소프트웨어 라이센스

  • 컴퓨터 프로그램은 지식재산권으로 보호받는 저작물.
  • 원칙적으로 저작자가 공표, 복제, 배포, 개작할 권한을 가짐.
  • 타인에게 일정한 대가나 조건을 전제로 권한을 부여할 수 있음.(라이센스)
    opensource.org

오픈 소스의 장점

  • 누구나 잘못된 점을 발견하고, 알리거나, 고칠 수 있음.
  • 배울 수 있고, 효율적인 프로그램 개발에 적용할 수 있음.
  • 오픈 소스는 여러 사람에 의해 테스트되어 안전함.
  • 오픈소스 운동의 철학은 커뮤니티를 통한 협력, 공유, 개방이 발전을 위해 효율적이라는 것.

GNU 프로젝트와 자유 소프트웨어 운동

  • 목적에 상관없이 프로그램을 실행할 수 있는 자유
  • 프로그램을 복제하고 공유할 수 있는 자유
  • 소스코드를 개작할 수 있는 자유
  • 개작된 프로그램을 배포할 수 있는 자유
    • 소프트웨어 소스코드는 공개

리눅스의 라이센스

  • 리눅스는 독접되거나 배타되지 않는 자유 소프트웨어
    • 공개 라이센스에 따라 자유롭게 고치고 배포 가능
  • 주로 GPL (GNU General Public License)를 따름.
  • 일부는 LGPL(GNU Lesser General Public License)
  • X Window는 MIT 라이센스

GNU GPL

  • 자유롭게 사용, 복제, 배포
  • 필요에 따라 자유롭게 수정하고 배포 가능.
  • 수정하여 배포하는 경우 소스코드를 공개하여야 함.
  • 수정된 소프트웨어에 저작권을 표시하고 똑같이 GPL 조건으로 배포하여야 함.

다양한 오픈소스 소프트웨어 라이센스

  • GPL, LGPL, MPL
    • 소스코드를 공개해야 하는 카피레프트 라이센스
      • 기본적으로 코드를 공개하도록 함.
    • LGPL은 주로 오픈소스 라이브러리에 적용됨
    • MPL 코드와 결합하여 프로그램을 만들 때, MPL 코드를 포함하지 않은 파일은 공개 의무가 없음.
    • 소스코드의 공개 범위는 다르게 정의 됨.
      • 전체 / 파일 / 모듈 단위 등
  • BSD, Apache, MIT 라이센스
    • 배포 시 소스코드의 비공개가 허용됨.
    • Permissive 라이센스라고도 함.
    • 코드의 재사용을 높이려는 목적.

리눅스 배포판

리눅스 배포판의 역사

  • 리눅스 배포판은 리눅스 커널 외에 시스템 유틸리티, 응용프로그램, 설치 프로그램을 포함한 완전한 운영체제
  • 리눅스 커널은 1991년 처음 개발됨.
    • 1994년에 커널 1.0이 발표 되었고 최신 안정 버전은 4.12
  • 1992년 최초의 배포판 MCC Interim과 SLS(Softlanding Linux System) 배포판이 발표됨.
  • 1993년부터 주요 배포판이 나오기 시작함.

주요 리눅스 배포판의 종류

  • Debian 계열 : Debian, Ubuntu etc
  • Slackware : Slackware, SUSE etc
  • Red Hat : Redhat, Fedora, CentOS etc

Debian Linux

  • Debian Project
    • 자유 운영체제를 만들어가는 사람들의 독자적인 모임.
    • Ian Merdock에 의해 1994년에 비영리 조직으로 설림
  • GNU 정신에 가장 충실한 배포판
    • GNU의 공식 후원을 받는 유일한 배포판
  • 세 가지 릴리즈를 유지
    • stable, testing, unstable
    • 코드명을 가지며(toystory 케릭터 이름), unstable 버전은 항상 코드명이 sid

Red Hat

  • 배포판 가운데 가장 널리 알려진 리눅스
  • Red Hat Linux
    • 2003년 지원 중단. 마지막 버전은 9.
  • Red Hat Enterprise Linux (RHEL)
    • Red Hat 사에 의해 지원. 최신 버젼은 7
  • Fedora 라는 오픈소스 프로젝트를 지원. (Fedora는 RHEL의 테스트 버젼)
  • RPM(Redhat Package Manager)
    • 바이너리, 설정파일, 라이브러리, 문서 등을 일괄 관리 기능
    • 데이터베이스를 검색하여 패키비나 특정 파일의 검색 기능
    • 패키비에 필요한 파일, 의존성 유무 등을 조사하는 기능

CentOS

  • Red Hat Linux로 부터 파생
  • RHEL 기반의 무료 버전
    • RHEL의 소스코드 기반으로 만들어지는 무료 배포판
    • RHEL은 유료로 지원
  • 서버용으로 많이 사용됨.
  • 최신 버전 7.3

SuSE Linux

  • Slackware Linux 의 파생
  • 독일에서 만든 배포판, 유럽에서 많이 사용.
  • Software und System Entwicklung의 약자(Software 와 System의 발전).
  • 풍부한 기능, 안정성, 보안 기능을 포함.
  • Novell 사에 의해 지원.
  • 두가지 종류
    • SUSE Linux Enterprise(유료)
    • openSUSE (무료)

Slackware Linux

  • SLS linux에서 파생
  • 가장 먼저 대중화 된, 현존하는 가장 오래된 배포판.
  • 1992년 Patrick Volkerding에 의해 시작됨.
  • 간결한 설계 철학으로 함. (the KISS priciple)
    • 현재 GNOME desktop이 제외되어 있음.
  • 유닉스 자체 학습에 적합함.

Ubuntu

  • Debian Linux에서 파생
  • desktop Unity를 제공하여 Linux를 쉽게 사용할 수 있도록 함.
  • Debian Linux에 비하여 사용 편리성에 중점을 둠.
  • 인기 있는 리눅스 배포판 중 하나.
728x90
반응형

'OS > Linux' 카테고리의 다른 글

[Linux] 사용자 관리  (0) 2020.10.25
[Linux] 시작과 종료  (0) 2020.10.24
[Linux] 파일과 디렉토리  (0) 2020.10.24
[Linux] Shell 사용하기  (0) 2020.10.16
[Linux] 리눅스 설치준비 및 표준 디렉토리  (0) 2020.10.16

+ Recent posts