[UNIX] 유닉스(UNIX)시스템 정리



  • 리눅스는 주로 GNU General Public License를 따르고 있다.
  • Unix와 유사한 공개 운영체제를 만들기 위한 프로젝트로 Richard Stallman에 의해 시작된 프로젝트는 GNU 프로젝트이다.
  • GNOME이 리눅스의 대표적인 desktop 환경이다.
  • Kernel이 Unix 운영체제의 핵심이다. Desktop은 그래픽 유저인터페이스와 윈도우 매니저, 여러 가지 유틸리티 프로그램을 통합하여 제공하는 환경이며, shell은 명령어를 통한 대화형 사용자 인터페이스이다. vi는 편집기 프로그램이다.  
  • 여러 프로세스를 동시에 수행할 수 있는 것은 멀티태스킹이다. 멀티유저는 여러 사용자가 사용할 수 있음을 의미하며, 멀티쓰레딩과 멀티프로세싱은 하나의 (또는 복수의) 프로세스에서 수행하는 작업들을 동시에 여러 갈래 또는 여러 프로세서에서 처리할 수 있다는 의미이다.
  • 하드디스크를 논리적으로 나눈 구역은 파티션이다.
  • 리눅스 설치에 필수적인 파티션은 root와 swap 이다
  • /etc 디렉터리에 대다수의 시스템 설정 파일이 위치한다.
  • IDE 드라이브이므로 '/dev/hd?', primary master이므로 'a'. 두 번째 파티션이므로 '2', 즉 '/dev/hda2'이다.
  • FTP는 File Transter Protocol, HTTPS는 Hypertext Transfer Protocol over Secure Socket Layer, SMTP는 Simple Mail Transfer Protocol, SSH는 Secure Shell이다.
  • ID가 1인 제일 먼저 실행되는 프로세스이며 모든 프로세스의 최상위 부모 프로세스인 것은 init이다.
  • SIGTERM이 프로세스가 스스로 종료하라는 메시지를 보내는 것이다. SIGABRT는 프로세스가 abort 되었을 때, SIGINT는 interrupt되었을 때, SIGKILL은 프로세스 강제 종료 시그널이다.
  • 리눅스 각 명령어들의 이름, 개요, 옵션, 환경과 매개변수 등을 자세히 보여주는 명령어는 man이다.
  • inode가 파일 이름을 제외한 파일에 대한 모든 정보를 가지고 있는 블록이다.
  • 시스템 비정상 종료 시 파일 시스템 복구를 쉽게 할 수 있도록 변경을 기록하는 로그를 journal이라고 한다.
  • 사용자 계정에 대한 자세한 정보가 저장되는 파일은 /etc/passwd이다.
  • 텍스트 파일 'memo.txt'의 내용을 스페이스 바를 누를 때마다 20줄 씩 화면에 보여주는 명령어는  more-20 memo.txt 이다
    • 페이지 단위로 파일의 내용을 보여주는 것은 more 명령어이고 페이지 크기는 '-숫자' 옵션으로 지정한다.
  • 현재 디렉터리 아래에 있는 'mydir' 디렉터리 안에는 'mydoc' 디렉터리만 있고 'mydoc' 디렉터리는 비어있다. 'mydir'디렉터리와 'mydoc' 디렉터리를 동시에 삭제할 수 있는 명령어는 ‘rmdir -p mydir/mydoc ‘이다
    • mydir 아래에는 mydoc만 있고 mydoc이 비어있다면 'rmdir -p mydir/mydoc' 명령으로 삭제 가능하다. 비어있지 않은 경우 'rm -r mydir' 명령을 사용하여야 한다.
  • 'test' 파일의 접근 권한을 소유자는 읽기와 쓰기 권한, 그룹은 읽기 권한, 다른 사용자는 아무 권한이 없도록 설정하는 명령어는 ‘chmod  640 test’ 이다
  • cp -r 이 디렉터리를 복사할 수 있는 명령이다.
  • 파일의 이름을 바꾸는 명령은 mv이다. cp는 복사본을 만들 수 있고 ln은 별명을 만들 수 있지만 파일의 이름을 바꾸는 것은 아니다. rm은 삭제 명령이다.
  • 접근 권한은 -perm, 그룹은-group, 변경 날짜는 -mtime 표현식을 이용할 수 있다. 그러나 find는 파일 내에 특정 문자열 패턴이 존재하는지 여부로는 검색할 수 없다.
  • 파일의 별명을 만들 수 있는 명령은 ln이다. cp는 복사본을 만들 수 있고 mv는 이름을 바꿀 수 있다. rm은 삭제 명령이다.
  • $가 줄 끝으로 이동하는 명령이다. ^는 줄의 (공백이 아닌) 처음으로 이동, +는 다음 줄로 이동, -는 이전 줄로 이동하는 명령이다.
  • / pattern이 문자열 패턴을 검색하는 명령, 이전 명령을 반복하는 것은 '.', tar 명령으로 아카이브 생성과 압축을 동시에 할 수 있음, dump가 파일시스템을 백업할 수 있는 명령어이다.
  • i-node는 파일시스템의 중요한 정보를 나타내는 블록이지만 그 자체가 파일로 취급되는 것은 아니다.
  • 마운트 할 파일목록은 /etc/fstab에 목록이 나열, 하드 디스크의 파티션을 생성하는 명령어는 fdisk, du가 파일에 사용되는 블록 수를 보여주는 명령어이다.
  • quota가 사용량 및 한도를 보여주는 명령이다. edquota는 한도를 설정하는 명령, quotacheck는 처음 사용량 관리 정보를 생성하거나 검사하는 명령, quotaon은 사용량 한도 제한을 시작하는 명령이다. quotaoff를 수행하면 quotaon에서 적용한 내용이 해제된다.
  • PCB에는 프로세스의 PID가 저장, PCB의 문맥저장영역에는 레지스터의 상태 값이 저장, PCB에는 프로세스가 할당받은 자원에 대한 정보가 저장, PCB는 커널에 의해 관리되고 커널 영역에 위치한다.
  • 디스패치(dispatch) 또는 스케줄(schedule)이 준비 상태에서 실행 상태로 전이되는 것이다.
  • Ctrl+Z가 포어그라운드로 실행되는 프로세스를 백그라운드로 전환하는 키 이다.
  • nohup이 터미널을 빠져나가도 실행 중인 프로그램을 종료되지 않고 계속 수행되게 해 주는 명령어이다.
  • 다음 crontab 파일의 필드 표현 중에서 매주 월요일에 한번만 명령을 수행하게 하는 것은 ‘11**1’ 이다, 월에 관계없이(3~4번째 *) 월요일(5번 째 1)의 1시 1분에 명령을 수행하게 한다


  • Unix의 특징
    • 멀티유저(multiuser), 멀티태스킹(multitasking) 지원
    • 신뢰성과 성능 보장(높은 안정성과 성능, 서버 용도로 사용 가능)
    • Character / Graphical User Interface 지원
      • Character : shell
      • Graphical : X Window와 GNOME, KDE 등 desktop
    • 공개 소스로서 빠르게 발전하고 보완됨, 여러 파일시스템 지원, 효율적인 하드웨어 활용이 가능
    • 인터넷의 모든 기능 지원
      • 웹 브라우저, 웹 서버, 메일 클라이언트, 메일 서버, DNS, 방화벽 등
  • Unix의 계열
  • 리눅스 배포판의 주요 계열
  • 파티션(partition)
    • 하드디스크를 논리적으로 나눈 구역
    • Windows에서는 각 파티션마다 각각의 드라이브로 지정
    • Primary 파티션
      • 파티션 테이블에 저장된 4개의 파티션까지 허용
    • Logical 파티션
      • Primary 파티션 중 하나를 Extended 파티션으로 사용
      • Extended 파티션 안에 여러 Logical 파티션을 만들 수 있음
    • 리눅스는 최소 두 개의 파티션이 필요
      • root 파티션
        • 리눅스 시스템이 운영되는 파티션
        • 사용자의 필요에 따라 크기를 설정
      • swap 파티션
        • 멀티테스킹을 위해(메인메모리 내용을 임시 보관 할 때 사용)
        • 가상으로 메모리를 사용하도록 지원하는 파티션
        • 설치된 메모리 크기의 2배 정도로 설정
    • 하드디스크 장치명
      • IDE 디스크 : 이름에 ‘hd’를 붙임(dev/hda, /dev/hdb, …)
      • SCSI 디스크 : 이름에 ‘sd’를 붙임(/dev/sda, /dev/sdb,…)
      • 물리적인 하드디스크가 추가될 때 알파벳 순서대로
    • 파티션 번호
      • 숫자를 1부터 차례대로 붙임(/dev/hda1, /dev/hda2, …)
    • 리눅스의 디렉토리
      • / 루트(파일시스템의 바탕을 이루는 중요한 디렉터리)
      • /boot 부트(커널 이미지(vmlinuz)와 부팅 정보 파일)
      • /etc 시스템 설정(시스템 환경 설정 파일)
        • /etc/shadow : 암호화된 패스워드
        • /etc/skel : 사용자 홈 디렉터리에 복사되는 파일들의 템플릿
        • /etc/group : 그룹 정보, 그룹명과 GID 나열
        • /etc/login.defs : 사용자 계정 추가 시 적용되는 설정
        • /etc/default/useradd : 홈 디렉터리, 쉘의 종류 등 정보
      • /bin 실행 명령(기본적인 실행 명령 파일)
      • /lib 공유 라이브러리(프로그램들이 의존하는 라이브러리 파일)
      • /home 사용자 계정(사용자별 디렉터리는 해당 사용자만 사용할 수 있는 독립적인공간)
      • /proc 시스템 정보(커널에 대한 정보를 가짐, 커널의 기능을 제어)
      • /sbin 시스템 관리와 관련된 실행 명령(시스템 관리와 관련된 실행 명령 파일)
      • /var 가변 자료 저장(시스템 작동 기록들을 저장 : 로그, 인쇄(스풀링), 메일, 네트워크)
      • /usr 사용자 디렉터리
        • /usr/bin 실행 파일들
        • /usr/sbin 유저시스템 실행 파일들
        • /usr/include 라이브러리 헤더 파일
        • /usr/lib 실행 파일을 위한 라이브러리
      • /dev 디바이스(장치를 접근하는데 사용되는 파일)
  • 리눅스의 운영체제 로딩과정
    • 전원이 들어오면 ROM BIOS의 부트스트랩 실행
    • 부트스트랩은 디스크 MBR영역의 부트블럭 프로그램 실행
    • 부트블럭 프로그램은 운영체제의 부트로더 프로그램을 실행
    • 부트로더는 리눅스 커널 이미지를 찾아 메모리 적재
    • 커널은 이미지 압축해제를 하고 커널 실행, 하드웨어 점검, root 쓰기모드 로드
    • 커널은 "/sbin/init"을 실행, 제어권 이전
    • 최상위 프로세스인 PID(Process ID) 실행, 제어권 이전
  • 리눅스 시스템의 종료
    • shutdown 명령 : 시스템 관리자(root) 권한만 실행 가능
    • 시스템 종료는 다음 순서로 진행
      • 사용자들에게 시스템 종료메시지를 보내고 로그인을 제한
      • 지정된 시간 내 종료되지 않은 프로세스를 강제 종료
      • 지정된 시간 내 로그아웃하지 않은 사용자를 강제 로그아웃
      • 메모리에 데이터를 디스크에 저장 (동기화)
      • 시스템 종료와 관련된 정보를 시스템 로그 파일에 기록
      • 마운트 되어 있는 디바이스들을 마운트 해제(unmount)
      • 시스템 종료


  • 리눅스의 특징은 무엇인가?
    • 멀티유저(multiuser), 멀티태스킹(multitasking) 지원
    • 신뢰성과 성능 보장
    • Character User Interface / Graphical User Interface 지원
    • 공개 소스로서 빠르게 발전하고 보완됨
    • 여러 종류의 파일 시스템을 지원
    • 쉘(shell)을 이용
    • 효율적인 하드웨어 활용
    • 인터넷의 모든 기능 지원
    • GNU General Public License에서 보장하는 소프트웨어에 대한 자유는?
      • 자유롭게 프로그램을 복제하고 사용할 수 있으며 소스 코드를   개작할 수 있고 개작된 프로그램을 배포할 수 있으나 소스코드는  공개하여야 한다.
  • 하드디스크의 파티션이란 무엇이며 리눅스에서 기본으로 사용하는 파티션은 무엇인가?
    • 파티션은 하드디스크를 논리적으로 나눈 구역이며 논리적인 하드디스크라고 할 수 있다. Windows에서는 독립적인 드라이브(C:, D: 등)로 지정할 수 있고 리눅스에서도 각각의 파티션은 독립적인 저장장치로 취급된다.  
    • 리눅스에는 반드시 root(/) 파티션이 있어야 하고 swap 파티션이 가상 메모리 관리를 위하여 필요하다. 이외에도 필요에 따라 추가 파티션을 생성할 수 있다.
  • 리눅스의 /etc, /home, /var, /dev 디렉터리 각각의 용도는 무엇인가?
    • /etc : 시스템 설정 파일이 주로 위치하는 곳이다.  
    • /home : 사용자 계정별 디렉터리가 위치하는 곳이다. '/home/사용자명' 디렉터리가 만들어지며 일반적으로 개별 사용자는 자신의 디렉터리 아래에 있는 파일만 생성, 변경, 삭제할 수 있다.
    • /var : 인쇄, 메일 등 가변 자료를 저장한다.
    • /dev : 리눅스는 모든 장치를 파일로 취급하는데 장치를 접근하는데 필요한 파일이 위치한 곳이다.
  • 리눅스 시스템의 부팅 과정을 전원을 켰을 때부터 로그인 프롬프트가 뜨기까지 과정을 자세히 나열하면?  
    • 전원을 켜면 ROM BIOS의 부트스트랩 로더(bootstrap loader)가 실행된다. 부트스트랩 로더는 MBR(Master Boot Record)에 있는 부트 블록(boot block)에 있는 내용을 실행한다.  
    • MBR 부트 블록은 운영체제의 부트 섹터에 있는 프로그램인 부트 로더(boot loader)를 실행한다.  
    • LILO, GRUB 등의 부트 로더는 보조 기억장치에 저장된 리눅스 커널 이미지를 찾아 실행시킨다.  
    • 커널 이미지는 압축을 풀고 커널 프로그램의 주 기능을 수행한다. 커널의 기능 점검, 하드웨어 점검, root 파티션을 읽기 전용으로 마운트(mount), 디스크 검사, root 파티션을 쓰기 가능 모드로 리마운트(remount), 그리고 init 프로세스를 실행시키고 제어권을 넘긴다.  
    • init 프로세스는 /etc/inittab 파일을 읽어 설정된 내용을 실행한다. Runlevel에 따라 실행되는 내용이 달라진다. init은 각종 장치를 활성화 시키고 리눅스 시스템 운영에 필요한 프로세스를 실행시킨다. Runlevel 5인 경우 최종적으로 X Window 로그인 화면이 나타난다.  
  • 리눅스의 주요 파일 시스템과 각각의 특징을 자세히 조사하시오.  
    • ext : 리눅스 초기의 파일 시스템이다. 지금은 거의 사용되지 않는다.  
    • ext2 : 리눅스의 기본 파일 시스템으로 사용되었다. 여전히 기본 파일 시스템으로 많이 사용하고 있는데 ext2는 journaling을 지원하지 않으므로 단순 쓰기 성능은 ext3나 ext4에 비하여 빠르다. 단점은 복구가 어렵다는 것이다.  
    • ext3 : ext2를 journaling을 지원하도록 확장한 것이다. Journaling은 변경을 기록하는 로그(journal)를 두어 시스템 비정상 종료 시 파일 시스템 복구를 쉽게 하는 방법이다. 현재 리눅스에서 주로 사용되고 있다.  
    • ext4 : ext3를 확장한 것이다. 일반적으로 ext2나 ext3에 비하여 읽는 속도가 빠르고 ext3보다 쓰기 속도도 빠르다. 최근 ext4의 사용이 늘어나고 있으며 안정성도 높은 것으로 알려져 있다
  • 사용자 계정을 추가, 삭제, 변경하는 명령을 나열하고 사용자 계정과 관련된 파일이 무엇인지 각각의 용도를 간단히 기술하시오.  
    • 계정을 추가하는 명령은 'useradd 사용자명', 삭제하는 명령은 'userdel 사용자명', 변경하는 명령은 'usermod 사용자명'이다.  참조하는 파일은 다음과 같다.  /etc/passwd : 사용자 계정의 자세한 정보
    • /etc/shadow : 암호화된 패스워드
    • /etc/skel : 사용자 홈 디렉터리에 복사되는 파일들의 템플릿
    • /etc/group : 그룹 정보, 그룹명과 GID 나열
    • /etc/login.defs : 사용자 계정 추가 시 적용되는 설정
    • /etc/default/useradd : 홈 디렉터리, 쉘의 종류 등 정보
  • 디렉터리의 내용을 보여주는 ls 명령의 사용법을 자세히 설명하시오.  
    • ls [옵션] [파일명]...  파일명 : 나열할 파일 이름 또는 디렉터리 이름이다. 파일명을 주면 해당 파일 정보만 나열하고 파일명을 생략하면 현재 디렉터리의 내용이 나열된다. 디렉터리 이름을 주면 해당 디렉터리의 내용을 나열한다. 여러 파일명을 사용할 수 있는데 파일명에 *나 ?를 사용하면 shell에 의하여 패턴에 맞는 파일의 이름들로 변환된다. 예를 들어 디렉터리 내에 a.txt, b.txt, cc.txt 파일이 있다고 가정하면 *.txt는 ‘a.txt b.txt cc.txt’로 변환되고 ?.txt는  ‘a.txt b.txt’로 변환된다.
    • 옵션
      • -a : 숨겨진 파일과 숨겨진 디렉터리 등을 포함하여 나열
      • -l : 파일종류/디렉터리/링크 구분, 접근 권한, 링크 수, 소유자, 그룹명, 파일 크기, 최종 수정된 시간, 이름 등 자세한 정보
      • -F : 이름 뒤에 실행 가능한 파일은 '*‘, 디렉터리는 '/'를 붙여서 보여줌
      • -i : 파일 및 디렉터리의 inode 번호를 보여줌
      • -s : 파일 및 디렉터리의 블록 수(간접 블록 포함)를 보여줌
      • -u : 파일 및 디렉터리가 최종 사용된 시간 순서로 보여주며 -l 옵션과 같이 사용하면 최종 사용된 시간을 보여줌
  • 텍스트 파일의 내용을 보여주는 명령을 나열하고 기능을 간략히 설명하시오.  
    • cat 파일명... : 파일(들)의 내용을 보여준다.  
    • more 파일명... : 파일(들)의 내용을 페이지 단위로 보여준다. 패턴 검색이 가능하다.  
    • head 파일명... : 파일(들)의 앞부분을 보여준다.  
    • more 파일명... : 파일(들)의 뒷부분을 보여준다.  
  • 현재 디렉터리를 변경하는 명령, 디렉터리를 생성, 삭제하는 명령을 나열하고 기능을 간략히 설명하시오.  
    • cd [디렉터리명] : 디렉터리명을 생략하면 사용자 계정의 홈 디렉터리로 변경되고 디렉터리명을 지정하면 해당 디렉터리로 변경된다. 'cd ~' 명령도 'cd' 명령과 동일하다. ~는 shell에서 홈 디렉터리를 의미한다. '.'은 현재 디렉터리이고 '..'은 상위 디렉터리이다.  
    • mkdir 디렉터리명... : 디렉터리(들)를 생성한다.  
    • rmdir 디렉터리명... : 디렉터리(들)를 삭제한다. 비어있는 디렉터리만 삭제 가능하므로 삭제 이전에 디렉터리 아래에 있는 파일과 디렉터리를 모두 삭제하여야 한다.  
  • 파일의 권한을 변경하는 명령어의 사용법을 자세히 설명하시오.  
    • chmod [옵션] 권한 파일명...  
    • -R : 파일명이 디렉터리일 경우 디렉터리 아래에 있는 모든 파일과 디렉터리에 권한이 재귀적으로 적용됨을 의미한다.  
    • 읽기 (r) : 파일 및 디렉터리 내용 보기
    • 쓰기 (w) : 파일의 쓰기 및 디렉터리 안에 파일 생성 및 삭제
    • 실행 (x) : 파일 실행 및 디렉터리 접근  
    • 사용자 권한 : 첫 번째 열 (예: rwx)
    • 그룹 권한 : 두 번째 열 (예: r-x)
    • 다른 사용자들 권한 : 세 번째 열 (예: r-x)  
    • 기호모드 [ugoa][+-=][rwx]
      • ugoa는 각각 user, group, other, all을 의미, 생략하면 all(user, group, other 모두 포함)의 의미이다.
      • +-=는 각각 권한 추가, 권한 삭제, 권한 지정을 의미한다.
      • 여러 기호모드를 나열하여야 할 경우 , 로 연결하고 ''로 기호모드를 감싸서 표현한다. (예 : chmod 'u=rw,g=r,o=' test.txt)  
  • 파일의 속성을 변경하는 명령어의 필요성과 사용법을 자세히 설명하시오.  
    • root 계정 뿐만 아니라 파일의 소유자일지라도 파일을 읽기전용으로만 사용하거나 삭제를 할 수 없게 지정하여 파일을 실수로 삭제하는 것을 막기 위하여 사용된다. root 계정만 속성을 변경할 수 있다.  
    • chattr [옵션] [+-=속성] <파일명/디렉토리>
      • 옵션
        • -R : 파일명이 디렉터리일 경우 디렉터리 아래에 있는 모든 파일과 디렉터리에 속성이 재귀적으로 적용됨을 의미한다.  
        • +-=는 각각 속성 추가, 속성 삭제, 속성 지정을 의미
        • i : 읽기 전용 모드
        • a : 추가 전용 모드  
        • lsattr 명령은 ls 명령과 비슷하나 파일과 디렉터리의 속성을 확인할 수 있다.  
  • 조건에 맞는 파일을 검색하는 명령의 사용법을 구체적인 예를 들어 기술하시오.  
    • 파일 검색 명령 find  find ~ -type d -perm 700 -name 'pr*' -print (홈 디렉터리 아래에서 접근 권한이 700이고 이름이 pr로 시작하는 디렉터리를 찾아서 이름을 출력)
    • find . -name '*.txt' -print -exec cat {} \; (현재 디렉터리 아래에서 이름이 .txt로 끝나는 것을 찾아서 이름을 출력하고 그 내용을 출력)
    • find /etc -type f -name passwd -print -exec grep root {} \; (/etc 디렉터리 아래에서 이름이 passwd인 파일을 찾아서 파일의 이름을 출력하고 그 파일 안에서 root라는 단어가 있는 줄을 출력, grep은 파일 안에 주어진 패턴이 있는 줄을 출력하는 명령임)
  • vi 편집기의 세 가지 모드에 대하여 설명하시오.  
      • 명령모드 (command mode)  라인 모드 또는 입력 모드에서 Esc를 눌러서 전환
        • 커서 이동, 복사, 삭제, 붙여 넣기, 치환, 검색 등 기능 수행
      • 라인모드 (line mode)  명령 모드에서 : 를 눌러서 전환
        • 명령 프롬프트에서 저장, 검색 등 명령 수행
      • 입력모드(insert mode)  명령 모드에서 a,  i,  o 키를 눌러서 전환
        • 글자를 입력하는 모드
    • vi 편집기의 파일 저장 및 끝내기 방법을 기술하시오.  
      • 라인 모드에서 저장  w : 현재 작업 중인 파일에 저장
        • w 파일명 : 다른 이름으로 저장
        • w! 파일명 : 다른 이름으로 저장 (기존 내용을 덮어씀)
      • 명령 모드에서 종료  ZZ : 변경 내용을 저장하고 종료
      • 라인 모드에서 종료  q : 그대로 종료(이전 저장 후 변경된 내용이 없는 경우)
        • q! : 저장하지 않고 종료
        • wq [파일명] 또는 x [파일명] : 변경 내용을 저장하고 종료
    • vi 편집기의 복사, 잘라내기, 붙여넣기 명령 수행 과정에 대하여 자세히 설명하시오.
      • 복사 y이동명령 : 현재 위치부터 이동 위치까지 복사
        • yy : 커서 위치의 한 줄 복사
        • 잘라내기 x : 커서가 위치한 문자 삭제
        • X : 커서 앞의 문자 삭제
        • D : 커서부터 줄의 끝까지 삭제
        • dd : 현재 줄을 삭제
        • d이동명령 : 현재 위치부터 이동 위치까지 잘라내기
        • 붙여 넣기 p : 잘라내기 하거나 복사된 부분을 커서 다음(줄)에 붙여넣기
        • P : 잘라내기 하거나 복사된 부분을 커서 앞(줄)에 붙여넣기
        • 이동명령 화살표 키 또는 hjkl : 각 방향으로 한 칸 이동
        • e : 다음 단어 끝 글자로 이동
        • b : 이전 단어의 첫 글자로 이동
        • w : 다음 단어의 첫 글자로 이동
        • - : 이전 줄의 처음으로 이동
        • + 또는 Enter : 다음 줄의 처음으로 이동
        • 0, $: 현재 줄의 처음, 현재 줄의 끝으로 이동
        • ^ : 현재 줄의 공백이 아닌 첫 글자로 이동
        • - : (, ) : 문장의 시작, 문장의 끝으로 이동
        • - : {, } : 문단의 시작, 문단의 끝으로 이동
        • G : 문서의 마지막으로 이동
        • nG : 문서의 n 번째 줄로 이동
        • '' : 이전의 커서 위치로 이동
        • M : 화면의 중간 줄에 커서 이동
    • 2. vi 편집기 옵션을 설정하는 방법을 설명하시오.  
      • vi 편집기 내에서 설정 라인모드에서 set 명령을 사용, 예를 들어 : set number autoindent
      • 홈 디렉터리의 .exrc 파일에서 set 명령어를 설정, 예를 들어 set number autoindent
      • shell에서 명령을 수행하거나 홈 디렉터리의 .bashrc에 추가, 예를 들어 EXINIT='set number autoindent'  export EXINIT
    • 파일의 아카이브 및 압축 파일을 관리하는 방법을 설명하시오.  
      • 아카이브 생성 및 풀기  만들기 : tar cvf 아카이브명 묶을파일명..
      • 풀기 : tar xvf 아카이브명
      • 내용보기 : tar tvf 아카이브명
      • 압축 및 압축 풀기  gzip 파일명…
      • gunzip 압축파일명…
    • 리눅스의 백업 명령 사용법을 설명하시오.  
      • cpio 명령 : 특정 디렉터리 아래 모든 파일을 지정한 백업장치로 백업 find 디렉터리명 -print | cpio -o > 백업장치명
      • cpio 명령 : 특정 파일보다 나중에 변경된 파일만 백업 find 디렉터리명 -newer 기준파일명 -print | cpio -o > 백업장치명
      • dump 명령 dump -수준 -f 백업파일명_or_장치명 백업할파일시스템장치명_or_마운트지점
        • dump -수준 -f 백업파일명_or_장치명 백업할파일명
    • 리눅스의 ext3 파일시스템의 특징을 ext2와 비교하여 설명하시오.  
      • ext3는 저널링 기능이 추가되었다. 저널링은 변경을 기록하는 로그를 두어 시스템이 비정상 종료했을 때 파일 시스템 복구를 쉽게 할 수 있게 해주는 메카니즘이다. ext3는 ext2 파일시스템으로부터 바로 업그레이드가 가능하다는 장점을 가지고 있다. ext3는 ext4, ReiserFS, XFS 등에 비하여 비교적 간단하고 많은 사용자에 의해 테스트되었으므로 신뢰성이 높다.  
    • 새로운 디스크에 파티션을 생성하고 파일시스템을 만들어 마운트 하는 방법을 예를 들어 설명하시오.  
      • 디스크 설치  PC에 새로운 디스크 설치 또는 VirtualBox에서 새로운 디스크 생성 새로운 디스크가 IDE secondary slave라고 가정하면 장치명은 /dev/hdd
      • 파티션 생성 (PPT 내용에서처럼 파티션을 추가하지 않고 파일시스템을 생성하는 것도 가능함)  fdisk /dev/hdd 명령 수행
      • fdisk 명령 내부에서 n 명령으로 새로운 파티션을 추가하고 w 명령으로 파티션 테이블을 기록하고 빠져나옴
      • 새로운 파티션의 이름은 /dev/hdd1 이 됨
      • 파일시스템 생성  mkfs -t ext3 /dev/hdd1 명령 수행
      • 마운트 위치 디렉터리 생성  mkdir /mnt/testmount
      • 마운트 실행  mount /dev/hdd1 /mnt/testmount
    • 프로세스 관리 블록(PCB)이 무엇인지 설명하고 PCB에서 관리하는 정보를 기술하시오.
      • PCB는 커널에 등록된 각 프로세스에 대한 정보를 저장하는 영역이다. 프로세스들은 모두 커널 공간에 자신의 PCB를 가지며 커널이 PCB의 내용을 관리한다.  
      • 프로세스 고유 번호(PID) : 커널이 시스템 내의 프로세스마다 고유하게 부여하는 번호, 프로세스 생성 시 부여된다.  
      • 프로세스의 우선순위(priority) : 프로세스 스케줄링을 위한 정보이며 프로세서를 할당할 프로세스를 선정하는데 참조된다.  
      • 현재 상태(current state) : 프로세스의 현재 상태이다.  
      • 할당 받은 자원에 대한 정보 : 프로세스에 할당된 자원에 대한 정보이다. 자원 관리에 참고된다.  
      • 문맥 저장 영역(context save area) : 프로세스가 실행을 중지해야 할 때 각종 레지스터(register)들의 값을 보관하기 위하여 사용된다. 해당 프로세스가 다시 실행될 때 레지스터의 값을 복원  
    • 프로세스 상태 전이도와 각 상태의 의미, 상태 전이가 일어나는 조건에 대하여 설명하시오.  
      • 프로세스 상태 전이도 (교재 p.213의 그림 7-1에 오류가 있으니 반드시 아래의 그림을 참고)
      • 생성(created) 상태 : 커널 공간에 PCB 등이 만들어지고 프로세스가 처음 생성되는 상태  
      • 준비(ready) 상태 : 기억 장치 등 필요한 모든 자원을 할당 받은 상태에서 프로세서를 할당 받으려고 대기하는 상태, 프로세서를 할당 받게 되면 즉시 실행이 가능  
      • 실행(running) 상태 : 프로그램 코드가 프로세서에 의해 실행되고 있는 상태, 프로세스가 필요한 모든 자원을 할당 받은 상태  
      • 대기(blocked) 상태: 프로세스가 필요한 자원을 요청하고 이를 할당 받을 때까지 기다리는 상태  
      • 지연(suspended) 준비 상태 : 프로세스가 기억장치를 제외한 다른 모든 필요한 자원들을 보유한 상태  
      • 지연(suspended) 대기 상태 : 프로세스가 대기 상태에서 기억 장치를 잃은 상태  
      • 디스패치(dispatch) 또는 스케줄(schedule): 준비 상태에서 프로세서를 할당 받아 실행 상태로 전이  
      • 선점(preemption) : 실행 상태의 프로세스가 프로세서 시간 할당량이 끝나거나 우선순위가 높은 프로세스가 들어왔을 때 프로세서를 반납하고 준비 상태로 전이  
      • 대기(block) : 실행 상태의 프로세스가 자원을 요청하여 대기 상태로 전이  
      • 웨이크업(wakeup) : 대기(지연 대기) 상태에서 프로세스가 요청한 자원이 할당되어 준비(지연 준비) 상태로 전이  
      • 스왑 인(swap-in) 또는 재활동(resume) : 지연 준비(지연 대기) 상태에서 기억 장치를 할당받아 준비(대기) 상태로 전이  
      • 스왑 아웃(swap-out) 또는 지연(suspend) : 준비(대기) 상태에서 기억 장치를 반납하고 지연 준비(지연 대기) 상태로 전이  
    • 백그라운드 프로세스와 포어그라운드 프로세스의 차이를 설명하시오.  
      • 백그라운드(background) 프로세스 : 프롬프트에서 명령 &로 실행한 프로세스로 키보드 입력을 받을 수 없다. 백그라운드로 프로세스를 실행시키면 쉘은 즉시 명령 대기 상태가 되는데 키보드 입력 없이 장시간 실행되어야 하는 경우 주로 사용한다. 백그라운드 프로세스도 화면 출력은 가능하다. 포어그라운드로 전환하는 방법은 쉘에서 fg 명령을 실행한다. ps 명령을 이용하여 백그라운드 프로세스의 상태를 점검할 수 있다.  
      • 포어그라운드(foreground) 프로세스 : 쉘 프롬프트에서 & 없이 명령을 실행한 프로세스로 키보드 입력을 받을 수 있다. 프로세스가 포어그라운드로 실행 될 때 쉘에서 + 키를 누르면 백그라운드로 전환된다.  
    • 프로세스 모니터링 명령과 프로세스 관리 명령이 어떤 것이 있는지 기술하시오.  
      • ps : 실행 중인 프로세스에 관한 정보를 보여줌  
      • top : 시스템에서 실행되고 있는 프로세스들의 실시간 정보를 보여줌  
      • kill / killall : 프로세스에 종료하라고 시그널(기본 SIGTERM)을 보냄, kill은 PID로 프로세스를 지정, killall은 명령 이름으로 지정  
      • exec : exec 명령을 호출하는 프로세스를 새로운 프로그램을 수행하도록 변경  
      • nice : 프로세스를 실행할 때 우선순위 값을 설정  
      • nohup : 터미널을 빠져나가도(예 : 로그아웃) 실행 중인 프로그램을 종료되지 않고 계속 수행되게 함  
      • cron 데몬, /etc/crontab 파일, crontab 명령 : 특정 시간에 특정 작업을 자동으로 수행하도록 지정  
    • 유닉스 시스템의 데몬이 무엇인지 설명하고 어떤 데몬이 있는지 알아보시오.  
      • 데몬(daemon)은 백그라운드로 실행되며 커널 요청 시 작동하는 프로세스이다. 주로 시스템의 서비스를 제공한다.  
      • 주요 데몬은 crond(시간에 따라 등록된 명령을 정기적으로 실행하는 데몬), httpd(웹 서버), sendmail(메일 전송 서버), sshd(시큐어 쉘), atd(명령 예약 기능), cupsd(프린팅 시스템 데몬), iscsid(Internet Small Computer System Interface 데몬), pcscd(스마트 카드 데몬) 등이 있다.

댓글

이 블로그의 인기 게시물

[유니티] 오류 사례 "Moving file failed", "Temp"

[유니티 사례] 비주얼 스튜디오(Visual Studio) 실행 오류

[유니티] 구글 지도 출력 샘플