시험종목 : 제1604회 리눅스마스터 2급 2차 A형
시험일자 : 2016. 12. 03.(토), 14:00 ~ 15:40(100분)
바로가기 >> 리눅스마스터 기출문제 목록
모두정답
chmod
파일이나 디렉터리에 접근할 수 있는 허가권을 설정하는 명령
chmod 명령에서 권한 지정방법 1번째
r | 읽기 | 4 |
w | 쓰기 | 2 |
x | 실행 | 1 |
ex) chmod 755 test
사용자는 7(4+2+1), 그룹은 5(4+1), order은 5(4+1) 의 권한으로 지정 -> 사용자는 7(읽기+쓰기+실행)의 권한을 주고 그룹과 order은 5(읽기+실행)의 권한을 줌
chmod 명령에서 권한 지정방법 2번째
u g o a 각각 사용자(u), 그룹(g), order(o), all(a) 을 의미한다. 생략하면 all
+ – = 각각 권한 추가(+), 삭제(-), 지정(=)을 의미한다.
ex) chmod go-rx test : 그룹과 order에게 r(읽기) 과 x(실행) 를 제거
umask
파일이나 디렉터리 생성시 부여되는 기본 허가권 값을 지정하는 명령이다. 파일 생성 시에는 666, 디렉터리인 경우에는 777에서 설정한 umask 값을 뺀 값을 기본 허가권으로 지정한다.
설정된 umask 값이 0002 인 경우 파일을 생성하면 기본 권한이 664(666-002), 디렉터리는 775(777-002)로 설정된다.
chgrp
파일이나 디렉터리의 소유그룹을 바꾸는 명령으로 root가 아니면 사용하는 경우가 드물지만 특정한 사용자가 여러 그룹에 속한 경우에 본인 소유의 파일을 본인이 속한 그룹 내에서 소유권을 변경시킬 수 있다.
사용법
# chgrp [option] group file(s)
1번 문제 해설 참조
소유권(Ownership)과 허가권(Permission)
리눅스는 하나의 시스템이 다수의 사용자들이 동시에 접속하여 사용하도록 설계된 운영체제이다. 여러 사용자가 동일한 저장공간인 하드디스크를 공유해서 사용하는데 이러한 구조는 각각의 사용자들이 생성한 파일이나 디렉터리가 다른 사용자에게 노출될 수 았다. 이러한 문제를 해결하기위해 리눅스에서는 소유권과 허가권이라는 두가지 권한을 가지고 접근 제어를 하도록 설계되어 있다. 소유권은 어떠한 파일이나 디렉터리를 소유하여 지배하는 권리를 말하고, 허가권은 파일이나 디렉터리에 접근 권한을 설정하는 권리로 일반적으로 소유권을 가진 사용자가 허가권을 설정한다. 소유권은 사용자 소유권과 그룹 소유권으로 나누고, 허가권(퍼미션)은 사용자(user), 그룹(group), 다른사용자(other)로 나누어 설정할 수 있다.
/etc/fstab
이 파일은 파일 시스템에 대한 다양한 정보를 담고 있는 파일로 부팅 시에 마운트할 파티션 정보가 기록되어 있는 파일이다. 파티션 정보를 변경하거나 디스크를 추가한 경우 이파일에 등록해야만 부팅 시에 자동으로 마운트할 수 있다.
fstab 의 필드 구성
첫 번째 장치명이 기록되는 영역이었으나 최근 배포판 리눅스에서는 볼륨 라벨(Volume Lable) 이나 UUID 가 대신 사용되고 있다.
두 번째 마운트될 디렉터리(Mount point) 를 나타낸다.
세 번째 파일 시스템 유형을 나타낸다.
네 번째 마운트될 때의 옵션을 나타낸다.
다섯 번째 dump 명령을 통한 백업 시 레벨 덤프 사용 주기를 결정하는 부분으로 0 이면 dump 를 사용하지 않고 1 이면 매일 수행, 2 이면 이틀에 한번 수행한다.
여섯 번째 부팅 시 파일 시스템을 점검하는 fsck 명령의 순서를 정한다.
<file system> <mount point> <type> <options> <dump> <pass>
mkfs
새로운 파일 시스템을 만드는 명령으로 root만 사용 가능하다. 파일 시스템 유형을 지정하지 않으면 ext2 로 생성된다.
사용법
# mkfs [-t fs_type] [option] 장치명
주요옵션
-t fs_type : 파일 시스템의 유형을 지정하는 옵션
mke2fs
ext2, ext3, ext4 파일 시스템을 만드는 명령으로 최근 리눅스 배포판에서 mkfs 명령 실행시 실제 사용되는 명령어이다.
파일 시스템의 유형을 지정하지 않으면 ext2 로 생성된다.
사용법
# mke2fs [option] 장치명
주요 옵션
-j : 저널링 파일 시스템인 ex3으로 만든다.
-t fs_type : 파일 시스템의 유형을 지정하는 옵션으로 ext3, ext4 등으로 지정하면 된다.
NFS
1984년 Sun Microsystems 사에서 개발한 프로토콜
TCP/IP 네트워크상에서 다른 컴퓨터의 파일 시스템을 마운트하고 공유하여 상대방의 파일 시스템 일부를 마치 자기 자신의 디렉터리인 것처럼 사용할 수 있게 해준다.
파일시스템 관련 명령어
fdisk : 디스크 파타션을 확인하고 추가/삭제하는 명령으로 설정 후 반드시 재부팅을 해야한다.
mkfs : 새로운 파일 시스템을 만드는 명령으로 root 만 사용 가능.
mke2fs : ext2, ext3, ext4 파일 시스템을 만드는 명령으로 mkfs 명령 실행시 실제 사용되는 명령
mount : 보조기억장치나 파일시스템이 다른 디스크를 / 의 하위 디렉터리로 연결하여 사용 가능하게 해주는 명령
umount : unmount 의 약자로 마운트된 파일 시스템을 해제시켜주는 명령
eject : 보조기억장치의 미디어를 꺼낼 때 사용. 이명령을 사용하면 자동으로 언마운트 작업을 수행한다.
파일 시스템
파일시스템이란 운영체제가 파티션이나 디스크에 데이터를 저장하고 읽고 쓰고 찾기 위해 구성하는 일련의 체계를 의미하는데, 운영체제가 사용자에게 제공하는 가장 직접적인 서비스 형태 중에 하나이다. 파일 시스템의 구성은 운영체제 설치시에 일어난다.
ext2 : ext 파일 시스템의 다음 버전으로 고용량 디스크 사용 등에 대비하여 확장성에 염두에 두고 설계한 파일 시스템이다.
ext3 : 2001년 11월 리눅스 커널 2.4.15 버전 부터 포함된 파일 시스템으로 ex2의 확장판이다. 리눅스의 대표적인 저널링 파일 시스템이다. ALC(Access Control List)를 통한 접근 제어를 지원한다.
ext4 : ext2 및 ext3 와 호환성이 있는 확장 버전으로 64비트 기억공간 제한을 없애고, 최대 1Exabyte 의 디스크 볼륨과 16Terabyte 의 파일을 지원하는 등 대형 파일 시스템과 관련된 기능이 대폭 강화되었다. 현재 대부분의 리눅스는 ext4 파일 시스템을 사용하고 있다.
XFS : SGI 에서 개발한 저널링 파일시스템.
JFS : IBM 에서 개발한 저널링 파일시스템.
셸의 확인
명령 프롬프트 상에서 ‘echo $SHELL’ 이라고 실행하면 확인 가능하다. 또한 다른 셸을 사용하기 위해 변경 가능한 셸의 확인은 ‘chsh -l’ 명령을 실행하거나 /etc/shells 에서 확인할 수 있다.
셸의 종류
bourne Shell : 1977년 스티븐 본이 개발한 유닉스 버전 7의 기본 셸
bash : 1989년 브라이언 폭스가 GNU 프로젝트를 위해 개발한 배시셸은 본 셸을 기반으로 만들어졌다. GNU 운영체제, 리눅스 , 맥 OS X 등 다양한 운영체제에서 사용중이며 현재 리눅스의 표준 셸이다
C 셸 : C 셸(C shell, csh)은 1978년 버클리 대학의 빌 조이가 개발한 것으로 C 언어를 기반으로 만들어졌으며 강력한 프로그램 작성 기능을 가지고 있다.
tcsh : 1975년 켄 그리어가 테넥스(TENEX)라는 운영체제에 명령행 완성 기능을 반영하게 되었고, 1981년 C Shell 과 통합해서 탄생시킨 것이 tcsh 이다. csh 의 기능을 강화시킨 셸.
ksh : 콘 셸(Korn Shell, ksh) 은 1983년 벨연구소의 데이비트 콘이 개발. 본 셸을 확장해서 만들어졌으며, 벨연구소 사용자들의 요청으로 C 셸의 많은 기능을 추가하였다.
usermod
사용자 계정 관리.사용자의 Shell, 홈 디렉터리, 그룹, UID, GID 등을 변경하는 명령어로 사용자 관련하여 대부분의 정보를 변경할 수 있다.
사용법
# usermod [option] 사용자계정
주요옵션
-d : 사용자의 홈 디렉터리를 변경한다.
-g : 사용자의 그룹을 변경한다.
-s : 사용자의 Shell 을 변경한다.
-u : 사용자의 UID 값을 변경한다.
-e : 계정만기일을 변경한다. YYYY-MM-DD 또는 MM/DD/YY 형태로 지정한다.
-l : 사용자의 아이디를 변경한다.
/etc/passwd
콜론(:)을 구분자로 ID, 홈 디렉터리 등 7개의 기본적인 정보를 담고 있다.
username : password : UID : GID : fullname : home-directory : shell
chsh
로그인하여 사용하는 기본 셸을 임시로 다른 셸로 변경하는 명령어
주요 옵션
-s : 지정하는 셸을 앞으로 사용할 로그인 셸로 변경.
-l : /etc/shells 파일 안에 지정된 셸을 나열.
주요 환경 변수
HOME : 사용자의 홈 디렉터리
PATH : 실행 파일을 찾는 디렉터리 경로
LANG : 셸 사용 시 기본으로 지원되는 언어
TERM : 로그인한 터미널 종류
PWD : 사용자의 현재 작업 디렉터리
SHELL : 사용자의 로그인 셸
USER : 사용자의 이름
DISPLAY : X 에서 프로그램 실행 시 출력되는 창
PS1 : 프롬프트 변수
PS2 : 2차 프롬프트 변수
HISTFILE : 히스토리 파일의 절대경로
HISTSIZE : 히스토리 파일에 저장되는 명령어의 개수
HISTFILESIZE : 히스토리 파일의 크기
HOSTNAME : 시스템의 호스트명
MAIL : 도착한 메일이 저장되는 경로
TMOUT : 사용자가 로그인한 후 일정 시간 동안 작업을 하지 않을 경우에 로그아웃 시키는 시간. 단위는 초.
UID : 사용자의 UID
셸에서 사용되는 특수문자
~ : 홈디렉터리
. : 현재 디렉터리를 나타내거나, 명령행 앞에서 source 라는 의미로 셸스크립트 등을 실행시킬 때 사용
.. : 부모 디렉터리
‘ ‘ : 작은따옴표는 모든 문자나 특수문자들을 일반문자로 취급한다.
” “ : 큰따옴표는 $, `, \, ! 를 제외한 모든 문자들을 일반문자로 취급한다.
` ` : 역따옴표는 명령 대체 기능을 수행하는데, 명령의 결과를 대체해서 사용한다.
# : 주석
$ : Shell 변수 기호. 뒤에 오는 문자열을 변수로 취급한다.
& : 특정 명령을 백그라운드로 실행할 때 사용한다.
* : 아무것도 없는 경우를 모함한 모든 문자를 의미한다.
: 보통 한 문자를 대체할 때 사용한다. 특정 명령에 대한 결과를 갖는 Return 변수로도 쓰인다.
( ) : 부속 shell(subshell) 을 뜻하는 기호로 하나의 셸 단위로 묶어준다.
\ : 탈출문자로 바로 다음에 오는 특수문자의 기능을 없앤다. 또한 alias가 설정된 명령어 앞에 사용하는 경우에는 alias 를 없애준다. 긴 명령행 입력 시에 행을 연장할 때도 사용한다.
[] : bracket 라고 부르며 선택할 수 있는 문자를 나열한다. 범위를 지정할 때는 – 를 사용한다.
{} : 안에 나열된 문자열 중 하나로 대치시킨다.
< : 입력 재지정
> : 출력 재지정
/ : 경로명 디렉터리 분리자
! : 명령문 history
셸 관련 파일 및 디렉터리
/etc/profile : 시스템 전체(모든 사용자)에 적용되는 환경변수와 시작관련 프로그램을 설정한다.
HISTTIMEFORMAT : 리눅스에서 history에 시간을 표시할때 사용하는 환경변수
데몬(daemon)
시스템에 관련된 작업을 하는 후위 프로세스(background process)를 말한다. 대부분의 데몬은 시스템에 관련된 작업을 하게 되는데, 서비스 요청이 없을 때는 후위 프로세스로서 유휴(idle) 상태에 들어가 있게 되어 시스템의 CPU를 차지하지 않지만 메모리와 기타 자원을 상당수 차지하게 된다. 그렇기에 많은 데몬을 띄울려면 그 만큼 시스템에 자원을 많이 가지고 있어야 한다.
인터넷 슈퍼 데몬(Internet Super Daemon)
xinetd는 Internet Super Daemon을 의미하는 것으로서, SENDMAIL, HTTPD 등과 같이 리눅스 시스템에서 실행되는 데몬의 일종이다. 이 슈퍼 데몬은 리눅스 서버에서 서비스되는 다른 여러가지 데몬들 을 제어하면서 각각의 서비스들의 연결을 담당하고 있다. 슈퍼데몬에 의해 제어가 되는 데몬에는 telnet 이외에 ftp, finger, login, shell 등이 있다.
데몬의 실행모드 Standalone, xinetd
Standalone
독립적으로 실행되며 항상 메모리에 상주하여 서비스 요청이 있을 때 언제든 바로 응답을 한다. 즉, 빠른 응답속드를 요하는 경우에 이 모드를 이용한다. 항상 상주해 있으므로 메모리 점유로 인한 서버 부하를 주는 단점이 있다. 슈퍼 데몬도 standalone모드로 실행이 된다.
xinetd
xinetd모드로 실행이 되는 데몬은 슈퍼 데몬에 의해 관리가 되며, 필요한 경우에만 메모리로 적재되어 실행이 되어 응답을 한다. 응답속도가 standalone 보다 느리고 서버부하를 상대적으로 줄일 수 있다.
하나의 프로세스가 다른 프로세스를 실행하기 위한 시스템 호출방법에는 fork 와 exec 가 있다.
fork 는 새로운 프로세스를 위해 메모리를 할당받아 복사본 형태의 프로세스를 실행하는 형태로 기존의 프로세스는 그대로 실행되어 있다.
exec 는 원래의 프로세스의 메모리에 새로운 프로세스의 코드를 덮어씌워 버린다.
bg
포그라운드 프로세스를 백그라운드로 전환하는 명령이다.
CTRL+Z 를 눌러 작업을 일시 중지시킨 후 bg 명령을 사용하여 백그라운드로 전환
kill
프로세스에 특정한 시그널을 보내는 명령으로 옵션 없이 실행하면 프로세스에 종료 신호(15, TERM, SIGTERM)를 보낸다. 보통 중지시킬 수 없는 프로그램을 종료시킬 때 많이 사용한다.
사용법
# kill [option] [signal] [PID 또는 %lob_number]
ex)
# kill 724
pid 가 724인 프로세스에 기본 시그널인 15번 시그널을 보낸다.
# kill -9 756 757 758
pid 가 756 757 758 인 프로세스를 강제 종료 한다.
# kill -9 75{6..8}
pid 가 756 757 758 인 프로세스를 강제 종료 한다.
데몬(daemon)
시스템에 관련된 작업을 하는 후위 프로세스(background process)를 말한다. 대부분의 데몬은 시스템에 관련된 작업을 하게 되는데, 서비스 요청이 없을 때는 후위 프로세스로서 유휴(idle) 상태에 들어가 있게 되어 시스템의 CPU를 차지하지 않지만 메모리와 기타 자원을 상당수 차지하게 된다. 그렇기에 많은 데몬을 띄울려면 그 만큼 시스템에 자원을 많이 가지고 있어야 한다.
인터넷 슈퍼 데몬(Internet Super Daemon)
xinetd는 Internet Super Daemon을 의미하는 것으로서, SENDMAIL, HTTPD 등과 같이 리눅스 시스템에서 실행되는 데몬의 일종이다. 이 슈퍼 데몬은 리눅스 서버에서 서비스되는 다른 여러가지 데몬들 을 제어하면서 각각의 서비스들의 연결을 담당하고 있다. 슈퍼데몬에 의해 제어가 되는 데몬에는 telnet 이외에 ftp, finger, login, shell 등이 있다.
데몬의 실행모드 Standalone, xinetd(커널 2.4버전 이전은 inetd)
Standalone
독립적으로 실행되며 항상 메모리에 상주하여 서비스 요청이 있을 때 언제든 바로 응답을 한다. 즉, 빠른 응답속드를 요하는 경우에 이 모드를 이용한다. 항상 상주해 있으므로 메모리 점유로 인한 서버 부하를 주는 단점이 있다. 슈퍼 데몬도 standalone모드로 실행이 된다.
xinetd
xinetd모드로 실행이 되는 데몬은 슈퍼 데몬에 의해 관리가 되며, 필요한 경우에만 메모리로 적재되어 실행이 되어 응답을 한다. 응답속도가 standalone 보다 느리고 서버부하를 상대적으로 줄일 수 있다.
pstree
현재 실행중은 프로세스를 트리 구조로 보여주는 명령어. 가장 왼쪽이 부모, 오른쪽이 자식 프로세스
jobs
백그라운드로 실행중인 프로세스나 현제 중지된 프로세스의 목록을 출력해 주는 명령
nohup
사용자가 로그아웃하거나 작업중인 터미널 창이 닫혀도 실행중인 프로세스를 백그라운드 프로세스로 계속 작업할 수 있도록 해주는 명령이다. nohup 는 실행한 명령을 자동으로 백그라운드로 보내지 않고, 사용자가 명령행 뒤에 & 를 명시해야 한다.
nice
프로세스의 우선순위를 변경하는 명령으로 NI값을 설정할 때 사용한다. 프로세스에 설정되어 있는 NI의 기본값은 0 이고 지정가능한 값의 범위는 -20 ~ 19 까지인데 값이 작을수록 우선순위가 높다. 일반 사용자는 NI값을 증가만 가능하고 root 사용자만이 NI 값을 감소시켜 우선순위를 높일 수 있다.
nice -10 bash : bash 의 NI 값을 10만큼 증가시킨다.
nice 10 bash : bash 의 NI 값을 -10만큼 감소시켜서 우선순위를 높인다.
nohup
사용자가 로그아웃하거나 작업중인 터미널 창이 닫혀도 실행중인 프로세스를 백그라운드 프로세스로 계속 작업할 수 있도록 해주는 명령이다. nohup 는 실행한 명령을 자동으로 백그라운드로 보내지 않고, 사용자가 명령행 뒤에 & 를 명시해야 한다.
cron 을 이용하여 주기적으로 실행하는 작업은 시스템 운영에 필요한 작업과 사용자의 필요에 의한 작업으로 나눌 수 있다.
실행에 필요한 작읍은 root 권한으로 /etc/crontab에 등록하여 주기적으로 수행할 수 있고 사용자는 crontab라는 명령을 수행해서 등록할 수 있다.
crontab 파일은 다음과 같이 총 7개의 필드로 구성되어 있다.
<minute> <hour> <day_of_month> <month> <day_of_week> <user-name> <command>
Emacs
이맥스(Emacs)는 사용자가 많은 부분을 설정할 수 있는 고성능 문서 편집기이다. 특히 프로그래머들이 많이 쓴다. 이맥스는 단순한 편집기를 넘어서는 텍스트 처리를 위한 포괄적인 통합환경, 또는 응용 프로그램 실행 환경이라고 할 수 있다. 이맥스는 매우 오랜 역사를 갖고 있고, 바탕부터 새롭게 짜는 개선을 거쳐, 많은 친족을 낳으며 현재에 이르고 있다. 현재의 GNU 이맥스의 개발은 유닉스 환경(과 VMS)을 주된 대상으로 하고 있지만, 마이크로소프트 윈도 등 다양한 환경에서도 이용할 수 있다.
역사
이맥스는 처음에 리처드 스톨만이 TECO의 매크로로서 개발했다. 이맥스는 Editor MACroS의 약자이다.
나중에 제임스 고슬링이 고슬링 이맥스로 개선하였고, 이 때에 리스프(Mocklisp 이라 부른다) 언어에 의한 환경설정 기능 및 에디터 자신의 기능을 확장할 수 있는 기능이 포함되었다.
현재 주로 사용되는 것은 자유 소프트웨어 재단의 리처드 스톨만이 바닥부터 다시 작성한 GNU 이맥스라 불리는 이맥스다. GNU 이맥스도 이맥스 리스프라고 하는 리스프에 기반을 두는 환경 설정 언어를 가지고 있다.
pico 편집기
pico는 워싱턴대학에서 만든 유닉스용 편집기로 간단하고 메뉴 선택 방식의 텍스트 편집기이다. vi나 emacs와 달리 윈도우의 메모장처럼 쉽게 사용할 수 있다.
nano
나노(nano)는 유닉스 계열 컴퓨팅 시스템이나 명령 줄 인터페이스를 사용하는 운영 환경을 위한 문서 편집기이다. 파인 전자메일 클라이언트의 일부인 피코 문서 편집기를 가상으로 구현하며 부가 기능도 제공한다. 피코와는 달리 나노는 GNU 일반 공중 사용 허가서(GPL) 라이선스로 배포된다. 1999년 크리스 알레그레타가 자유 소프트웨어로 출시한 나노는 오늘날 GNU 프로젝트의 일부로 되어 있다.
pico 편집기
pico는 워싱턴대학에서 만든 유닉스용 편집기로 간단하고 메뉴 선택 방식의 텍스트 편집기이다. vi나 emacs와 달리 윈도우의 메모장처럼 쉽게 사용할 수 있다.
주요 메뉴
Ctrl + o : 파일을 저장한다.
Ctrl + x : 파일을 빠져나온다. 저장이 안되어 있으면 저장할 것인지 물어본다.
Ctrl + r : 현재 커서 위치에 다른 파일을 불려온다.
Ctrl + a : 현재 행의 맨 앞으로 이동한다.
YUM (Yellowdog Updater, Modified )
rpm기반의 시스템에서 패키지를 손쉽게 설치해 주고 자동으로 업데이트를 수행하는 명령행 기반의 유틸리티이다.
command(명령)
list 항목 : 전체 패키지에 대한 정보를 출력
info 패키지명 : 패키지에 대한 정보를 출력
check-update : 업데이트가 필요한 패키지를 출력
update 패키지명 : 패키지를 업데이트할 때 사용
install 패키지명 : 패키지를 설치할 때 사용
search 문자열 : 문자열이 포함된 패키지를 찾아준다.
remove 패키지명 : 패키지를 삭제할 때 사용한다.
grouplist : 패키지 그룹에 대한 정보를 출력
groupinfo 패키지그룹명 : 해당 패키지 그룹명과 관련된 패키지의 정보를 보여준다.
groupupdate 패키지그룹명 : 지정한 그룹의 패키지를 업데이트 한다.
groupinstall 패키지그룹명 : 지정한 그룹의 패키지를 설치한다.
groupremove 패키지그룹명 : 지정한 그룹의 패키지를 제거한다.
whatprovides : 특정한 파일이나 기능과 관련된 패키지 정보를 검색할 때 사용한다.
clean 값 : yum 관련해서 저장된 정보를 삭제할 때 사용. 값에는 all, packages, rpmdb 등이 있다.
history : 그동안 사용했던 yum 명령들을 확인
tar 옵션
-c : 지정한 파일이나 디렉터리를 하나로 묶어 새로운 tar 파일을 생성한다.
-x : 생성된 tar 파일을 푼다.
-v : 어떤 명령을 실행할 때 대상이 되고 있는 파일들을 보여준다.
-f 파일명 : 작업 대상이 되는 tar 파일의 이름을 지정한다.
-r : 기존의 tar 파일 뒤에 파일을 추가한다.
-t : tar 파일 안에 묶여 있는 파일의 목록을 출력한다.
-h : 심볼릭 링크가 가리키고 있는 원본 파일을 저정한다.
-p : 파일이 생성되었을 때 권한을 그대로 유지하게 해준다.
-Z : compress 관련 옵션으로 예전 UNIX 계열 표준 압축 파일인 tar.Z 에 사용한다.
-J : xz 관련 옵션으로 압축 파일인 tar.xz 에 사용한다.
-z : gzip 관련 옵션으로 압축 파일인 tar.gz 에 사용한다.
-j : bzip2 관련 옵션으로 압축 파일은 tar.bz2 에 사용한다.
-z : gzip 관련 옵션으로 압축 파일인 tar.gz 에 사용한다.
-c : 지정한 파일이나 디렉터리를 하나로 묶어 새로운 tar 파일을 생성한다.
-v : 어떤 명령을 실행할 때 대상이 되고 있는 파일들을 보여준다.
-f 파일명 : 작업 대상이 되는 tar 파일의 이름을 지정한다.
-x : 생성된 tar 파일을 푼다.
gzip
GNU 에서 만든 압축 프로그램으로 유닉스용 압축 프로그램인 compress 를 대체하기 위해 만들어졌다. 압축 해제는 gunzip
-z : gzip 관련 옵션으로 압축 파일인 tar.gz 에 사용한다.
RPM(Red Hat Package Manager)
레드햇사에서 만든 패키지 관리기법으로 프로그램을 .rpm 형태의 파일로 배포하고, rpm 명령을 사용하여 손쉽게 설치 및 갱신, 제거, 검증, 질의 등의 관리를 할 수 있다.
rpm 사용법
rpm 명령의 사용법은 설치 및 갱신, 제거, 질의, 검증, 리빌드모드 등 총 5가지로 나눌 수 있다.
질의모드
패키지 관련 정보를 알아내기 위해 -q 옵션을 사용한다. -q 옵션만 사용하면 패키지 설치 유무나 간단한 버전정보만 출력한다. 더욱 정확한 정보출력을 위해서 -i, -a, -l, -d 등의 옵션과 연동해서 쓴다.
-q : 질의시 꼭 사용해야 하는 옵션. 패키지를 찾으면 이름과 버전만 표시
-i : 설치된 패키지의 정보를 출력한다. -p 옵션과 같이 사용하면 rpm 패키지 파일에 대한 정보를 알 수 있다.
-l : 패키지에서 설치한 모든 파일 정보를 출력한다. -p 옵션과 같이 사용하면 rpm 패키지 파일이 설치되는 목록 파일을 알 수 있다.
-a : 시스템에 설치된 모든 패키지 목록을 출력한다.
-p 패키지 파일명 : rpm 패키지의 파일에 대한 정보를 보여준다. 이 옵션을 사용하려면 패키지 파일의 정확한 이름을 입력해야 한다.
제거모드
설치된 패키지를 제거한다. 패키지를 제거 할 때는 -e 옵션을 사용한는데, 다른 패키지에 대한 의존성이 발생할 경우에는 제거되지 않는다. 의존성이 발생한 패키지를 제거하기 위해서는 먼저 의존성 관련 패키지를 제거하거나 nodeps 옵션을 지정해야 한다.
ex) rpm -e httpd nodeps
35번 문제 해설 참조
검증모드
검증모드는 rpm 데이터베이스에 저장되어 있는 패키지의 메타데이터 정보를 이용하여 변경된 정보를 찾아내는 모드이다.
검증 코드
S : 파일 크기 변경
M : 파일 모드 변경
5 : 메시지 다이제스트(Message Digets) 변경(보통 MD5값 변경)
U : 소유자 변경
G : 그룹 소유권 변경
T : 수정 시간 변경
P : 권한 변경
CUPS(Common Unix Printing System)
컴퓨터를 인쇄 서버로 기능하도록 해주는 유닉스 계열 운영 체제를 위한 모듈 방식의 프린팅 시스템
애플에서 개발한 오픈 소스 프린팅 시스템으로 유닉스 계열 운영체제의 시스템을 프린터 서버로 사용가능하게 해준다.
스캐너 관련 명령어
sane-find-scanner : USB 및 SCSI 스캐너와 관련 장치 파일을 찾아주는 명령
scanimage : 이미지를 스캔하는 명령
scanadf : 자동 문서 공급 장치(ADF)가 장착괸 스캐너에서 여러 개의 사진을 스캔할 때 사용하는 명령이다.
xcam : GUI 기반으로 평판 스캐너나 카메라로부터 이미지를 시캔해 주는 명령
lp
System V 계열에서 사용하는 인쇄 명령으로 BSD 계열의 lpr 명령과 유사하다
사용법
# lp [option] [파일명]
주요 옵션
-d : 다른 프린터를 지정한다.
-n : 인쇄할 매수를 지정한다.
ex) lp -n 2 /etc/passwd
/etc/passwd 의 내용을 2매 출력한다.
startx
X 윈도를 실행시키는 스크립트로 시스템 환경을 초기화시키고 시작하는데 필요한 여러 프로그램을 호출하고 최종적으로 xinit 을 호출하는 명령이다.
사용법
$ startx [option]
X 윈도 시스템은 그래픽 사용자 인터페이스(GUI) 환경으로, 기존의 디스플레이 시스템과 다른 점은 X 프로토콜(네트워크 프로토콜)을 기반으로한 클라이언트와 서버 모델의 네트워크 지향 윈도 시스템이다.
윈도 매니저
X 윈도 환경에서 윈도이 배치와 표현을 담당하는 시스템 소프트웨어
윈도 매니저 종류
대표적인 X 윈도 매니저에는 GNOME 에서 사용되는 Mutter 및 Metacity 와 KDE 에서 사용되는 KWin 및 KWM 이 있다.
/etc/inittab
부팅과 관련된 런레벨이 정의되어 있다.
run level을 재부팅 후에도 적용하기 위해 변경해야 하는 파일
xauth
X 접근허가(authority) 파일 관련 도구. 키값을 사용하여 인증
xauth list DISPLAY : .Xauthority 파일의 MIT-MAGIC-COOKIE-1 의 키값을 출력한다. 해당 값을 X 클라이언트 프로그램을 전송할 시스템에 보내어 설치한다.
GNOME 에 포함된 주요 프로그램
nautilus : 파일 관리 프로그램
Cheese : 웹 캠을 이용한 사진 및 비디오 추출 프로그램
GIMP : 이미지 편집, 변환, 생성 프로그램
Rhythmbox : 인터넷 라디오 및 음악 연주 프로그램
gThumb : 이미지 뷰어 및 편집 프로그램
gnome-terminal : 터미널 프로그램
gedit : 문서 편집 프로그램
evince : 문서 뷰어 프로그램(pdf, PS, EPS 등)
totem : 사운드 및 비디오 플레이어
gnome-system-monitor : 프로세스 및 자원 모니터링 프로그램
sount-juicer : CD 플레이어 프로그램
evolution : 메일, 달력, 주소록 관련 프로그램
X 윈도 응용 프로그램
GIMP : 사진이나 그림을 편집하는 자유 소프트웨어
Totem : GNOME 데스크톱 기반으 Movie Player 이다.
KMid : 미디 및 노래방 파일 플레이어
ImageMagick : 비트맵 이미지를 보여주고 생성 및 편집이 가능하도록 지원해주는 프로그램 패키지
eog : GNOME 데스크톱에서 제공하는 이미지 뷰어 프로그램
kdegraphics : KDE 에서 제공하는 그래픽 관련 프로그램 패키지
Rhythmbox : 통합형 음악 관리 프로그램
evince : 멀티 페이지 문서 뷰어 프로그램
LibreOffice : 무료로 배포되는 오피스 프로그램 패키지
xhost
X 서버에 접근할 수 있느 클라이언트를 지정하거나 해제하는 명령
사용법
# xhost [ +|- ] [ IP주소 or 도메인명 ]
ex)
xhost + 192.168.10.100
192.168.10.100 의 접속을 허가
xhost – 192.168.10.100
192.168.10.100 접속을 차단
TCP/IP 4계층
응용 계층
전송 계층
인터넷 계층
네트워크 인터페이스 계층
LAN 전송 방식
(1)이더넷
이더넷은 LAN을 위해 개발된 네트워크 기술로 각 기기들이 48비트 길이의 고유한 MAC 주소를 기반으로 상호간에 데이터를 주고받을 수 있도록 만들어졌다. 이더넷은 CSMA/CD 방식을 이용한다. 토큰 링 방식에 비해 효율성은 떨어지지만 가격이 저렴하기 때문에 많이 사용되고 있다.
(2)토큰링
1980년대 초반 IBM 에 의해 개발된 LAN 기술. 토큰링 네트워크는 여러 스테이션(컴퓨터)이 하나의 링에 이어져 형성되고, 데이터는 한쪽 방향으로 흐르도록 하여 한 컴퓨터에서 다른 컴퓨터 순으로 순서대로 전달된다. 데이터 전송을 위한 네트워크 채널을 사용하려면 토큰이라는 일종의 사용권을 획득해야 한다. 전송속도는 4MB ~ 16MB 이고, 동축 케이블이나 광케이블 등을 전송메체로 사용한다. 처음 등장했을 때는 이더넷보다 빠르고 안정적인 기술로 각광받았으나, 스위치 이더넷이 개발되면서 쇠퇴하였다.
(3)FDDI
FDDI 는 전송매체를 광섬유 케이블을 사용하여 설계된 링 구조의 통신망으로 네트워크 엑세스를 제어하기 위해 토큰 패싱 방법을 사용한다.
OSI 7계층
1계층 물리계층
실제 장치들을 연결하기 위해 필요한 케이블 및 연결장치 등과 같은 기계적인 항목과 전압, 신호 방식 등의 전기적인 항목에 대한 특성을 규정한다.
이 계층에서 동작하는 장치에는 허브나 리피터 등이 있다.
2계층 데이터링크 계층
신뢰성 있는 데이터 전송을 보장하기 위한 계층으로 오류 제어와 흐름 제어를 담당한다.
데이터를 전송하는 단위로 분할하는 기능 , 프레임 전달, 전송단위의 순서 제어 기능, 에러 제어 기능, 데이터 흐름 제어 기능 등을 제공한다.
네트워크의 오류 제어는 데이터를 재전송하는 방법으로 처리한다.
이 계층에서 동작하는 장치에는 브리지나 스위치 등이 있다.
3계층 네트워크 계층
네트워크 계층은 송신 호스트에서 전송한 데이터가 수신 호스트에 도착하기 위한 올바른 경로를 선택을 지원하는 역할을 한다.
송수신 호스트 사이의 패킷경로를 결정하는 라우팅, 트래픽이 집중되지 않도록 하는 혼잡 제어, 패킷의 분할과 병합, 인터네트워킹 등의 역할을 수행한다.
이계층에서 동작하는 장치에는 라우터가 있다.
4계층 전송 계층
전송계층은 송신 프로세스와 수신 프로세스간의 연결기능을 제공하고 안전한 데이터 전송을 지원한다.
계층 4까지의 기능은 운영체제에서 시스템 콜 형태로 상위 계층에 제공한다.
5계층 세션 계층
세션 계층은 전송 계층과 유사하게 송수신 호스트의 세션연결을 지원하지만 더욱 더 상위의 논리적 연결을 지원한다.
즉 사용자간의 대화를 제어하는 대화 제어자로서 사용자들을 동기화하고 유효한 설정인지를 확인한다.
6계층 표현 계층
표현 계층은 송수신 호스트 간에 서로 다르게 사용하는 코드와 문자 등을 번역하여 일관되게 전송 데이터를 서로 이해할 수 있도록 하는 기능을 제공한다.
데이터의 암호화와 해독을 수행하고 효율적인 전송을 위해 필요에 따라 압축과 압축해제를 수행한다.
7계층 응용 계층
응용 계층은 응용 프로그램과 연계하여 사용자에게 편리한 환경을 제공하는 역할을 수행한다.
전자우편, 웹, 파일전송 등과 같은 응용 프로그램 환경에서 이루어진다.
IP 주소(IPv4)는 32비트의 이진 숫자로 구성되어 있고 8비트씩 4부분으로 나우어 십진수로 표현한다.
유니캐스트(unicast) : 고유 주소로 식별된 하나의 네트워크 목적지에 메시지를 전송하는 방식
멀티캐스트(Multicast) : 한 번의 송신으로 메시지나 정보를 목표한 여러 컴퓨터에 동시에 전송하는 방식
브로드캐스트(Broadcast) : TCP/IP 의 IPv4 에서 같은 대역의 네트워크주소를 가진 모든 호스트들에게 패킷을 전송하는 방식
애니캐스트(anycast) : 단일 송신자로부터의 데이터그램들을 토폴로지 상의 잠재적인 수신자 그룹 안에서 가장 가까운 노드로 연결시키는 네트워크 어드레싱 및 라우팅 방식
20 : FTP-data 포트로 FTP 전송 시에 사용
21 : FTP 제어에 사용
telnet 으로 포트 통신 상태 확인
> telnet ip port 로 확인
SSH(Secure Shell) : 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용 프로그램 또는 그 프로토콜. 암호화 기법 사용.
SCP(Secure copy) : 로컬 호스트와 원격 호스트 간 또는 두 개의 원격 호스트 간에 컴퓨터 파일을 안전하게 전송하는 수단
SFTP(Secure File Transfer Protocol) : 신뢰할 수 있는 데이터 스트림을 통해 파일 접근, 파일 전송, 파일 관리를 제공하는 네트워크 프로토콜
Outlook Express : Microsoft 의 전자 메일용 소프트웨어
ifconfig(interface config)
네트워크 인터페이스를 설정하거나 확인하는 명령이다. IP주소, 넷마스크 주소, MAC 주소 등을 설정하고 확인할 수 있다.
사용법
# ifconfig [interface] [adress] [option]
ex)
# ifconfig eth0 down
eth0 카드의 작동을 중지
# ifconfig eth0 up
eth0 카드의 작동을 활성화
# ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 up
eth0 에 IP주소는 192.168.0.2 netmask는 255.255.255.0 broadcast는 192.168.0.255 를 각각 부여하고 활성화한다.
72번 문제 해설 참조
insmod
커널에 모듈을 적재하는 명령으로 해당 모듈이 자동으로 검색되고 삽입된다.
인터넷에 접속하게 위해서는 하드웨어 설정이외에 IP 주소 설정이 필요하다. DHCP 서버에 의해 IP 를 자동으로 할당받는 경우에는 문제가 없지만, 서버로 사용 하거나 고정 IP 를 할당받는 겅우에는 정확한 주소 정보가 필요하다. 네트워크 주소를 설정하기 위해서는 IP 주소, 넷마스크 주소(Netmask Address), 게이트웨이 주소(Gateway Address)가 필수적으로 요구된다. 추가로 호스트 이름(Hostname)과 도메인이 있는 경우에는 도메인의 이름도 알아야 한다.
네트워크 설정 관련 명령어
ifconfig : 네트워크 인터페이스를 설정하거나 확인하는 명령이다.
route : 라우팅 테이블의 정보를 출력하거나 관리하는 명령
netstat : 네트워크의 연결상태를 출력하는 명령
arp : 캐시를 관리하는 명령
ping : 인터넷 제어 메시지 프로토콜인 ICMP(Internet Control Message Protocol) 을 이용하여 네트워크 연결을 확인할 수 있는 명령이다.
traceroute : 패킷이 특정 호스트까지 라우팅되는 과정을 출력하는 명령으로 라우팅 과정에 장애가 있을 경우 위치를 파악할 수 있다.
nslookup : DNS를 이용하여 도메인이나 IP를 조회하는 명령
dig : 도메인명으로 정보를 조회하는 명령
host : 도메인명으로 정보를 조회하는 명령
hostname : 시스템에 설정된 호스트네임을 출력하거나 설정하는 명령
mii-too : 보통 네트워크 인터페이스의 상태를 점검하고 설정하는 유틸리티
ethool : 이더넷 카드 설정 정보를 출력하거나 변경하는 명령
ip : 이더넷 장치, IP주소, 라우팅 정보등의 설정정보를 출력하거나 변경하는 명령
리눅스 클러스터링
여러대의 컴퓨터를 연결하여 하나의 컴퓨터를 사용하는 것처럼 구성된 시스템
고계산용 클러스터(HPC)
HPC 클러스터는 고성능의 계산 능력을 제공하기 위한 목적으로 제작되는데 주로 과학계산용으로 활용되고, 흔히 부르는 슈퍼컴퓨터가 HPC 클러스터로 구성하여 제작된다. 다른 말로 베어울프 클러스터라고도 한다.
부하분산 클러스터
대규모의 서비스를제공하기 위한 목적으로 사용되는 클러스터 기법으로 이용자가 많은 웹 서비스 등에 활용가치가 높다. 보통 여러 대의 리얼 서버에 부하를 분산해 주는 로드 밸런서를 두고 운영한는 방법이다.
고가용성 클러스터
지속적인 서비스 제공을 목적으로 하는 클러스터로 위에 열거된 부하분산 클러스터와 연동하여 많이 사용된다. 부하분산 클러스터에서 로드 밸런서의 오류가 발생하여 동작을 하지 않는다면 리얼 서버가 정상적인 동작을 하더라도 서비스를 제공하지 못하게 된다. 이러한 문제점을 해결하기 위해 하나으 Primary Node 가 부하분산의 처리를 수행하고 다른 하나의 Backup Node 가 Primary Node 의 상태를 체크하고 있다가 이상이 발생하면 서비스를 받도록 구성하는 바법이다.
클라우드 컴퓨팅에서 제공하는 서비스
클라우드 컴퓨팅이 발전하면서 모든 IT 자원을 서비스 형태로 제공할 수 있는 환경으로 바뀌고 있다. 클라우드 컴퓨팅 서비스는 일정부분 공통적인 요소를 가지고 있지만 IssS, PaaS, SaaS 등 크게 세가지로 구분된다.
IaaS : 업무 처리에 필요한 서버, 데스크톱 컴퓨터, 스토리지 같은 IT 하드웨어 자원을 클라우드 서비스로 빌려 쓰는 형태
PaaS : 업무에 필요한 소프트웨어를 개발할 수 있는 환경(플랫폼)을 클라우드에서 제공받는다.
SaaS : 기업에서 사용하는 소프트웨어를 통째로 클라우드 사업자에게 빌려 쓰는 개념