본문 바로가기

OS/Linux

UNIX 시스템 1~5주차

1주차 - UNIX 개요


1.리눅스의 특징은 무엇인가? 

멀티유저(multiuser), 멀티태스킹(multitasking) 지원

신뢰성과 성능 보장

Character User Interface / Graphical User Interface 지원

공개 소스로서 빠르게 발전하고 보완됨

여러 종류의 파일 시스템을 지원

쉘(shell)을 이용

효율적인 하드웨어 활용

인터넷의 모든 기능 지원


2.리눅스 역사에서 중요한 공헌 두 가지 이상을 나열하면? 

1972년 벨 연구소의 Ken Thompson과 Dennis Ritchie가 Unix 운영체제를 C언어 기반으로 작성

1984년 Richard Stallman이 Unix와 유사한 공개 운영체제를 개발하는 GNU 프로젝트를 시작

1991년 Linus B. Torvalds에 의해 리눅스 커널 발표

1992년 최초 리눅스 배포판 : MCC Interim 리눅스


3.GNU General Public License에서 보장하는 소프트웨어에 대한 자유는? 

자유롭게 프로그램을 복제하고 사용할 수 있으며 소스 코드를 개작할 수 있고 개작된 

프로그램을 배포할 수 있으나 소스코드는 공개하여야 한다.


4.리눅스 배포판 중 최근에 인기 있는 것은 어떤 것이며, Red Hat 계열인 CentOS 리눅스와 Fedora 리눅스의 특징은 무엇인가? 

현재 가장 인기 있는 배포판은 Ubuntu인 것으로 보인다. Fedora, openSuSE, Debian Linux, Mandriva Linux, 

Linux Mint, PCLinuxOS, Slackware Linux, Gentoo Linux, CentOS, FreeBSD 등도 인기 있는 배포판이다.

CentOS 리눅스는 안정적이라는 특징이 있고 Fedora 리눅스는 새로운 버전이 빠르게 나온다는 특징이 있다.



2주차 - 리눅스 설치


1.가상머신을 이용하여 리눅스를 설치하는 것과 하드디스크의 비어있는 파티션에 리눅스를 직접 설치하는 것의 장단점은 무엇이며 어떻게 선택해야 하는가? 

가상머신에 설치하는 경우 VirtualBox등의 가상머신 소프트웨어 설치절차가 필요하지만 디스크 공간의 여유만 있으면 간단하게 리눅스를 설치할 수 있다는 장점이 있다. 단점은 PC의 성능이 낮을 경우 가상머신을 구동하는데 부담이 있다는 것이다. 절대적인 기준은 아니지만 CPU Pentium4 2.6GHz, 메모리 1GB 정도의 PC에 설치하였을 때 설치 진행속도는 느리지만 시스템 운영에는 문제가 없는 것으로 보인다.

하드디스크의 비어있는 파티션에 설치하기 위해서는 반드시 Windows등 기존 운영체제에 사용하지 않는 파티션이나 별도의 하드디스크 드라이브가 있어야 한다. 그러나 가상머신을 사용하는 것에 비하여 리눅스 시스템의 속도가 빨라진다는 장점이 있다. CPU Pentium3 1GHz, 메모리 512MB 정도의 PC에는 가상머신 없이 직접 설치를 권장하며, 직접 설치 시 시스템 운영에는 문제가 없는 것으로 보인다.


2.하드디스크의 파티션이란 무엇이며 리눅스에서 기본으로 사용하는 파티션은 무엇인가? 

파티션은 하드디스크를 논리적으로 나눈 구역이며 논리적인 하드디스크라고 할 수 있다.

Windows에서는 독립적인 드라이브(C:, D: 등)로 지정할 수 있고 리눅스에서도 각각의 파티션은 독립적인 저장장치로 취급된다.

리눅스에는 반드시 root(/) 파티션이 있어야 하고 swap 파티션이 가상 메모리 관리를 위하여 필요하다. 이외에도 필요에 따라 추가 파티션을 생성할 수 있다.


3.리눅스의 /etc, /home, /var, /dev 디렉터리 각각의 용도는 무엇인가? 

/etc : 시스템 환경 설정 파일이 주로 위치하는 곳이다.

/home : 사용자 계정별 디렉터리가 위치하는 곳이다.

‘/home/사용자명’ 디렉터리가 만들어지며 일반적으로 개별 사용자는 자신의 디렉터리 아래에 있는 파일만 생성, 변경, 삭제할 수 있다.

/var : 인쇄, 메일 등 가변 자료를 저장한다.

/dev : 리눅스는 모든 장치를 파일로 취급하는데 장치를 접근하는데 필요한 파일이 위치한 곳이다.



3주차 - 리눅스 시작 : 운영체제의 로딩, 리눅스 시작과 종료 , 기본 명령, 파일 시스템 


1. 리눅스 시스템의 부팅 과정을 전원을 켰을 때부터 로그인 프롬프트가 뜨기까지 과정을 자세히 나열하면? 

전원을 켜면 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 로그인 화면이 나타난다.


2.리눅스 시스템의 종료 명령어는 무엇이고 어떤 옵션이 있는가? 그리고 리눅스 시스템의 종료 절차를 나열하면? 

종료 명령은 ‘shutdown [-krhfc][-t sec] time [경고메시지]’ 이다. 다음을 포함하여 여러 가지 옵션을 선택할 수 있다. 

-t sec : 프로세스에 경고 보냄과 kill 시그널 사이 초 단위 간격

-k : 사용자에게 경고 메시지만 전달

-r : 시스템 종료 후에 재부팅

-h : shutdown 후에 시스템 정지(halt)

-f : 재부팅할 때 fsck(file system check)를 하지 않음

-c : shutdown명령어를 취소한다.

time : +m(m분 후) 또는 hh:mm(지정 시각)에 시스템 종료

경고메시지 : 사용자에게 보내지는 메시지


시스템 종료는 다음 순서로 진행된다. 

① 사용자들에게 시스템 종료메시지를 보내고 로그인을 제한한다.

② 지정된 시간 내 종료되지 않은 프로세스를 강제 종료한다.

③ 지정된 시간 내 로그아웃하지 않은 사용자를 강제 로그아웃 시킨다.

④ 메모리에 데이터를 디스크에 저장한다.

⑤ 시스템 종료와 관련된 정보를 시스템 로그 파일에 기록한다.

⑥ 마운트 되어 있는 디바이스들을 마운트 해제한다.

⑦ 시스템을 종료한다.


3.리눅스의 주요 파일 시스템과 각각의 특징을 자세히 조사하시오. 

ext

: 리눅스 초기의 파일 시스템이다. 지금은 거의 사용되지 않는다.

ext2

: 리눅스의 기본 파일 시스템으로 사용되었다. 여전히 기본 파일 시스템으로 많이 사용하고 있는데 ext2는 journaling을 지원하지 않으므로 단순 쓰기 성능은 ext3나 ext4에 비하여 빠르다. 단점은 복구가 어렵다는 것이다.

ext3

: ext2를 journaling을 지원하도록 확장한 것이다. Journaling은 변경을 기록하는 로그(journal)를 두어 시스템 비정상 종료 시 파일 시스템 복구를 쉽게 하는 방법이다. 현재 리눅스에서 주로 사용되고 있다.

ext4

: ext3를 확장한 것이다. 일반적으로 ext2나 ext3에 비하여 읽는 속도가 빠르고 ext3보다 쓰기 속도도 빠르다. 최근 ext4의 사용이 늘어나고 있으며 안정성도 높은 것으로 알려져 있다.



4주차 - 기본 운영(1) : 사용자 계정 관리, 그룹 계정 관리, 파일/디렉터리 상태 출력 명령 


1. 사용자 계정을 추가, 삭제, 변경하는 명령의 사용법을 간단히 기술하고 관련이 있는 파일에 관해 설명하시오. 

계정을 추가하는 명령은 ‘useradd 사용자명’, 삭제하는 명령은 ‘userdel 사용자명’, 변경하는 명령은 ‘usermod 사용자명’이다. 참조하는 파일은 다음과 같다. /etc/passwd : 사용자 계정의 자세한 정보

/etc/shadow : 암호화된 패스워드

/etc/skel : 사용자 홈 디렉터리에 복사되는 파일들의 템플릿

/etc/group : 그룹 정보, 그룹명과 GID 나열

/etc/login.defs : 사용자 계정 추가 시 적용되는 설정

/etc/default/useradd : 홈 디렉터리, 쉘의 종류 등 정보 

2.디렉터리의 내용을 보여주는 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 옵션과 같이 사용하면 최종 사용된 시간을 보여줌

3.텍스트 파일의 내용을 보여주는 명령을 나열하고 기능을 간략히 설명하시오. 

cat 파일명... 

: 파일(들)의 내용을 보여준다.

more 파일명... 

: 파일(들)의 내용을 페이지 단위로 보여준다. 패턴 검색이 가능하다.

head 파일명... 

: 파일(들)의 앞부분을 보여준다.

more 파일명... 

: 파일(들)의 뒷부분을 보여준다.

4.현재 디렉터리를 변경하는 명령, 디렉터리를 생성, 삭제하는 명령을 나열하고 기능을 간략히 설명하시오. 

cd [디렉터리명] 

: 디렉터리명을 생략하면 사용자 계정의 홈 디렉터리로 변경되고 디렉터리명을 지정하면 해당 디렉터리로 변경된다.

‘cd ∼’명령도 ‘cd’명령과 동일하다. ∼은 shell에서 홈 디렉터리를 의미한다. ‘.’은 현재 디렉터리이고 ‘..’은 상위 디렉터리이다.

mkdir 디렉터리명... 

: 디렉터리(들)를 생성한다.

rmdir 디렉터리명... 

: 디렉터리(들)를 삭제한다. 비어있는 디렉터리만 삭제 가능하므로 삭제 이전에 디렉터리 아래에 있는 파일과 디렉터리를 모두 삭제하여야 한다.



5주차 - 기본 운영(2) : 파일/디렉터리 조작 명령


1.파일의 권한을 변경하는 명령어의 사용법을 자세히 설명하시오. 

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)


2.파일의 속성을 변경하는 명령어의 필요성과 사용법을 자세히 설명하시오. 

root 계정 뿐만 아니라 파일의 소유자일지라도 파일을 읽기전용으로만 사용하거나 삭제를 할 수 없게 지정하여 파일을 실수로 삭제하는 것을 막기 위하여 사용된다. root 계정만 속성을 변경할 수 있다.


chattr [옵션] [+-=속성] 파일명...


-R : 파일명이 디렉터리일 경우 디렉터리 아래에 있는 모든 파일과 디렉터리에 속성이 재귀적으로 적용됨을 의미한다.속성 지정은 다음과 같다. 


+, -, = 는 각각 속성 추가, 속성 삭제, 속성 지정을 의미

i : 읽기 전용 모드

a : 추가 전용 모드


lsattr 명령은 ls 명령과 비슷하나 파일과 디렉터리의 속성을 확인할 수 있다.


3.리눅스 명령어의 설명서를 보는 명령은 무엇이며 사용법을 구체적인 예를 들어 기술하시오. 

man 명령

man find (find 명령에 대한 설명 표시, <space>로 페이지 이동, /로 단어 검색)


한글 설명서(번역 과정에서 생략된 내용이 있음) 대신 영문 설명서는 보려면 쉘에서 unset LANG 명령을 수행한 후 man 명령을 수행하면 그 이후부터는 영문 설명서가 표시된다.


4.파일을 복사, 삭제, 이동하는 명령의 사용법을 구체적인 예를 들어 기술하시오. 

복사 명령 

cp cp src_file dst_file (src_file을 dst_file이라는 이름으로 복사)

cp src_file dst_dir (src_file을 dst_dir에 복사)

cp -r src_dir dst_dir (src_dir의 내용을 dst_dir로 복사)


삭제 명령 

rm rm del_file (del_file을 삭제)

rm -r del_dir (del_dir과 내용을 모두 삭제)


이동 명령 

mv mv src_file dst_file (src_file을 dst_file이라는 이름으로 변경)

mv src_file dst_dir (src_file을 dst_dir로 이동)

mv src_dir dst_dir (src_dir을 dst_dir로 이동)


5.파일의 링크를 생성하는 명령의 사용법을 구체적인 예를 들어 기술하시오. 

하드 링크의 생성 ln : 하나의 파일(디렉터리 제외)에 여러 이름을 부여 

ln filename nickname (filename 파일에 nickname이라는 별명을 부여)

vi nickname (filename 파일을 nickname으로 접근할 수도 있음)

rm filename (filename을 삭제해도 nickname이라는 이름으로 파일이 남아있음)

rm nickname (nickname까지 삭제해야 파일이 실제로 삭제됨)


심볼릭 링크의 생성 ln -s : 파일(디렉터리 포함)에 연결을 생성 

ln -s src_dir/src_file my_link (src_dir에 있는 src_file에 대한 연결을 현재 디렉터리에 생성)

cat my_link (src_dir에 있는 src_file을 my_link로 접근할 수 있음)

rm src_dir/src_file (연결의 원본이 삭제되면 my_link는 사용할 수 없음)


6.조건에 맞는 파일을 검색하는 명령의 사용법을 구체적인 예를 들어 기술하시오. 

파일 검색 명령 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은 파일 안에 주어진 문자열 패턴이 있는 줄을 출력하는 명령임)