스캔코드와 키 코드간의 매핑 테이블을 보여주는 명령어
스캔 코드와 키 코드간의 변환은 setkeycodes 유틸리티를 사용한다. 아마, 이 기능을 사용하는 사람은 거의 없을 것이다. 키 코드를 문자, 문자열, 동작 등 키 맵으로 변환하는 것은 loadkeys와 setmetamode 유틸리티를 사용하면 된다.

# getkeycodes 
Plain scancodes xx (hex) versus keycodes (dec) 
0 is an error; for 1-88 (0x01-0x58) scancode equals keycode 

 0x58:   88 124 125 126 127   0   0   0 
 0x60:    0   0   0   0   0   0   0   0 
 0x68:    0   0   0   0   0 122   0 123 
 0x70:    0   0   0  89 120   0   0  90 
 0x78:   91  92  93  94  95 124 121   0 

Escaped scancodes e0 xx (hex) 

e0 00:    0   0   0   0   0   0   0   0 
e0 08:    0   0   0   0   0   0   0   0 
e0 10:    0   0   0   0   0   0   0   0 
e0 18:    0   0   0   0  96  97   0   0 
e0 20:    0   0   0   0   0   0   0   0 
e0 28:    0   0   0   0   0   0   0   0 
e0 30:    0   0   0   0   0  98   0  99 
e0 38:  100   0   0   0   0 113 114 115 
e0 40:  116 117   0   0   0   0 101 102 
e0 48:  103 104   0 105 124 106 118 107 
e0 50:  108 109 110 111   0   0   0   0 
e0 58:    0   0   0 125 126 127   0   0 
e0 60:    0   0   0   0   0   0   0   0 
e0 68:    0   0   0   0   0   0   0 112 
e0 70:    0   0   0   0   0   0   0   0 
e0 78:    0   0   0   0   0   0   0   0 
2005/06/21 19:57 2005/06/21 19:57
입력 내용에서 특정 문자열을 검색하여 그 문자열이 들어 있는 줄을 화면에 출력하는 명령어

사용법 : grep [옵션] 패턴 [파일....] 
-A num, --after-context=num : 지정한 num 라인만큼 일치하는 라인의 뒤의 내용까지 보여준다. 
-b, --byte-offset : 각 라인 결과를 보여주기 전, 입력 파일의 byte-offset를 보여준다. 
-B num, --before-context=num :  지정한 num 라인만큼 일치하는 라인의 앞의 내용까지 보여준다. 
-c, --count : 일치하는 라인의 수를 보여준다. 
-C[num], --before-context=num : 지정한 num 라인만큼 일치하는 라인의 위와 아래의 내용을 보여준다. 기본은 두 줄이다. 
-d action, --directories=action : 디렉토리일 경우, 지정한 action을 실행한다. 
기본 action은 read이다. 

아래는 실행 가능한 action이다. 
 read : 디렉토리를 보통의 파일과 같이 읽는다. 
 skip : 디렉토리를 건너뛴다. 
 recurse : 디렉토리 아래의 모든 파일들을 읽는다. 

-e pattern, --regexp=pattern : 하나 이상의 탐색 패턴을 지정한다. 단순한 패턴과 같이 동작하지만, 패턴이 -로 시작할 때 유용하다. 
-f file, --file=file : 패턴을 지정한 파일 목록에서 가지고 온다. 
-h, --no-filename : 패턴의 결과로 나오는 결과의 목록은 보여주나, 파일명은 보여 주지 않는다. 
-i, --ignore-case : 대 소문자의 구별을 하지 않지 않는다. 
-l, --files-with-matches : 일치하는 라인의 파일명만 보여주고, 라인의 내용은 보여주지 않는다. 
-n, --line-number : 일치하는 라인의 결과와 그 파일에서의 결과 라인이 몇 번째 라인인지 보여준다. 
-q, --quiet, --silent : 결과를 보여주지 않는다. 
-r, --recursive : 각 디렉토리의 하위 파일들을 읽는다. -d recurse 옵션과 같다. 
-s, --no-message : 존재하지 않거나 읽을 수 없는 파일에 대한 결과로 보여주는 에러를 보여주지 않는다. 
-v, -revert-match : 지정한 패턴과 일치하지 않는 것들을 보여준다. 
-w, --word-regexp : 한 단어로 일치하는 결과만을 보여준다. 
-x, --line-regexp : 패턴과 일치하는 전체 라인의 수만 보여준다. 
-y : -i 옵션과 동일하다. 

grep은 텍스트 파일 내용을 검색하여 원하는 문자열 패턴을 찾는 명령어다. 자세한 사용법은 셀 스크립트에서 설명한다.

[관련 명령어]
egrep = grep -E
fgrep = grep -F agrep grep이 유사(approximate)매칭을 할 수 있게 확장한다.
2005/06/21 19:52 2005/06/21 19:52
필요에 따라 새로운 그룹을 만든다

사용법 : groupadd [옵션] 그룹 
-g gid : 지정한 gid로 그룹 ID를 생성한다. 
-o : -g 옵션과 함께 사용하며, 지정한 gid가 이전에 있더라도 중복을 허용한다. 
-r : 시스템 관리 영역인 499이하의 그룹 ID에서 그룹을 추가한다. 

groupadd 명령은 새로운 그룹을 추가하는 명령으로 /etc/group과 관련이 있다.

# cat /etc/group 
root:x:0:root 
bin:x:1:root,bin,daemon 
daemon:x:2:root,bin,daemon 
sys:x:3:root,bin,adm 
adm:x:4:root,adm,daemon 
tty:x:5: 
disk:x:6:root 
------------중략------------- 
dba:x:5000:oracle:root 

dba 그룹은 oracle과 root 사용자가 속해 있는 것을 알 수 있다. 추가적으로, 다음에 사용자를 추가시켜 같은 그룹에 포함시킬 수 있다.

[관련 명령어]
groupdel 그룹을 삭제한다.
groupmod 그룹의 정보를 변경한다.
groups 각 사용자가 속한 그룹을 보여준다.
2005/06/21 19:51 2005/06/21 19:51
보안 등의 이유로 사용하지 않는, 지정한 그룹을 제거하는 명령어

사용법 : groupdel 그룹 

groupadd 명령으로 추가된 /etc/groups의 그룹을 삭제할 수 있다. group 명령 다음에 삭제하고자 하는 그룹명만 지정하면 된다.
먼저, groupadd 명령으로 grouptest 그룹을 추가해 보자.

# groupadd grouptest 

/etc/group 파일에서 grouptest가 있는 줄을 grep 명령으로 뽑아 본 결과, 아래와 같이 grouptest 그룹이 추가된 것을 볼 수 있다.

# cat /etc/group | grep grouptest 
grouptest:x:6001: 

이를 groupdel 명령으로 지정한 grouptest 그룹을 삭제한다.

# groupdel grouptest 
# cat /etc/group | grep grouptest 
2005/06/21 19:50 2005/06/21 19:50
그룹 정보를 수정하는 명령어

사용법 : groupmod [옵션] 그룹 
-g gid : 지정한 gid로 그룹의 ID로 변경한다. 
-n name : 지정한 name으로 그룹명을 변경한다. 
-o : -g 옵션과 사용하며, 지정한 gid가 존재하더라도 중복을 허용한다. 

groupmod 명령어는 groupadd 명령어로 추가된 그룹의 이름을 변경할 경우 사용하는 명령어이다.
/etc/group 파일에 groupadd 명령에서 추가한 grouptest 그룹이 추가되어 있다.

# cat /etc/group | grep grouptest 
grouptest:x:6001: 

grouptest 그룹명을 -n 옵션으로 grouptest1 그룹명으로 변경할 수 있다.

# groupmod -n grouptest1 grouptest 
# cat /etc/group | grep grouptest 
grouptest1:x:6001: 

이외에도 -g 옵션을 지정하면 현재 6001로 되어 있는 gid를 변경할 수 있다.

# groupmod -g 6002 grouptest1 
2005/06/21 19:49 2005/06/21 19:49
각 사용자가 속한 그룹의 이름을 보여주는 명령어

사용법 : groups [옵션] [사용자] 
--help : 도움말을 보여준다. 
--version : 버전정보를 보여준다. 

groups 명령어는 사용자를 지정하지 않으면, 현재 로긴된 사용자가 속한 그룹을 보여 주며, 사용자를 지정하게 되면 지정한 사용자가 속해 있는 그룹들을 보여 주게 된다.
현재 나의 그룹은 admin 이다.

$ groups 
admin 

root가 속한 그룹을 한번 살펴보자.

$ groups root 
root : root bin daemon sys adm disk wheel 
2005/06/21 19:28 2005/06/21 19:28
/etc/group과 /etc/gshadow 파일을 검사하는 명령어

사용법 : grpck [옵션] [파일] 
-n : 삭제 여부를 확인하지 않는다. 

grpck 명령은 pwck와 유사한 명령으로 /etc/group 과 /etc/gshadow의 파일열을 검사해 잘못된 부분을 체크하고, 만일 파일에서 잘못된 부분을 찾으면 삭제할 것 인지의 여부를 확인 후 yes/no의 대답을 기다린다. -n 옵션은 모든 질문의 대답을 no로 한다. 보통은 /etc/group 파일이 잘못될 경우는 별로 없다. 그룹에 새로운 계층을 추가하기 위해, 편집하던 도중 오타가 발생했다고 가정해 보자.
grouptest1 그룹에 root 계정을 추가하려고 했지만, roo 만 입력한 경우이다.

# cat /etc/group | grep grouptest1 
grouptest1:x:6001:roo 

grpck 명령을 실행한 결과 roo 계정이 없다고 에러를 보여준다.

# grpck /etc/group 
group grouptest1: no user roo 
delete member roo'? n 
grpck: no changed 

n을 입력하고 /etc/group 파일의 잘못된 부분을 수정할 수 있다.
2005/06/21 19:27 2005/06/21 19:27
gzip 형식으로 압축된 파일을 해제하는 명령어이다.

사용법 : gunzip [옵션] [파일] 
-c, --stdout, --to-stdout : 표준 출력으로 압축 파일을 생성하고, 원본파일을 그대로 보존한다. 
-f, --force : 파일이 멀티 링크가 걸려 있거나, 다른 터미널에서 이미 사용중인 경우 또는 파일이 이미 존재하는 등의 여러 가지로 문제가 생기더라도 압축을 강제로 해제한다. 
-h, --help : 도움말을 보여준다. 
-l, --list : 압축된 파일의 크기, 압축 해제가 될 때의 크기, 압축율(ratio), 압축이 해제될 때의 파일명 등의 정보를 보여준다. 
-L, --license : gunzip의 라이센스를 보여준다. 
-r, --recursive : 지정한 디렉토리를 압축한 경우, 디렉토리에 속한 파일까지 압축을 해제를 한다. 
-t, --test : 압축된 파일이 제대로 되었는지 테스트한다. 
-v, --verbose : 진행상황을 자세하게 보여준다. 
-V, --version : 버전정보를 보여준다. 

gunzip 명령어는 gzip 형식으로 압축된 파일을 해제할 때 사용한다. 이는 gzip -d 옵션과 동일한 역할을 한다.
먼저 디렉토리의 파일들을 하나의 파일로 압축해 보자. tar cvfz 명령은 현재 디렉토리에 있는 파일을 test.tar 파일로 묶은 다음, test.tar 파일을 test.tar.gz 파일명으로 압축 한다는 내용이다.

# tar cvfz test.tar.gz * 
test90990.hwp 
test3343.hwp 
33232test.doc 
0094343.doc 
Command.pdf 

test.tar.gz 파일명으로 압축된 것을 볼 수 있다.

# ls 
test90990.hwp   test3343.hwp   33232test.doc 
0094343.doc      Command.pdf   test.tar.gz 

.gz 확장자는 gunzip 명령으로 파일을 압축 해제 할 수 있다.

# gunzip test.tar.gz 
# ls 
test90990.hwp   test3343.hwp   33232test.doc 
0094343.doc      Command.pdf   test.tar 

혹은 gunzip 명령 대신, gzip-d 옵션으로도 해제가 가능하다.

# gzip -d test.tar.gz 

파일을 압축 해제와 동시에 tar로 묶인 파일을 해제하려면, tar xvfz 옵션을 사용하면 된다.

# tar xvfz test.tar.gz 
2005/06/21 19:13 2005/06/21 19:13
실행파일을 적절하게 압축하여 용량을 줄이는 명령어

사용법 : gzexe [파일...] 

gzexe 유틸리티는 실행파일을 압축하지만, 압축된 파일이 이전의 파일과 같이 실행이 가능하게 하여, 디스크 용량을 줄일 수 있는 장점이 있다.
먼저, /bin/cat 명령어를 압축해 보자.

# gzexe /bin/cal 

파일을 압축하게 되면, 기존의 파일은 파일 맨 끝에 틸드(~)가 붙어 자동 백업 파일을 생성하고, 압축된 파일은 기존의 파일로 생성된다.

# ls -al /usr/bin/cal* 
-rwxr-xr-x    1 root     root         5930 Apr  5 18:53 /usr/bin/cal 
-rwxr-xr-x    1 root     root        10760 Jun 24  2002 /usr/bin/cal~

이 압축된 파일은 용량은 원본의 반으로 줄었지만, 이전 명령과 같이 문제없이 cat의 역할을 할 수 있다.
2005/06/21 19:11 2005/06/21 19:11
gzip 방식의 파일 압축 프로그램으로 리눅스에서 가장 보편적으로 사용되는 압축 방식이다.

사용법 : gzip [옵션] [파일] 

gzip 명령은 GNU zip으로 압축률이 매우 뛰어난 프로그램이다. 압축을 하기 위해 가장 많이 사용하는 명령으로 tar 명령과 함께 묶어 tar.gz의 확장자로 쓰여지는 경우도 많이 있다. gzip은 파일을 압축만 할 수 있고, 파일을 묶지는 못한다. 여러 개로 파일을 하나로 파일 압축으로 묶어 파일 전송이나 관리 등의 편리를 위해서는 필히 tar 명령과의 조합이 필요하다.
gzip은 압축이 성공한다면 기존의 원본파일은 모두 사라지고, gz의 확장자를 가진 파일이 새롭게 생성되게 된다. 또한, 파일의 허가권과 모드는 기존 파일의 것이 그대로 유지된다.
upgrade 디렉토리 밑에 있는 모든 파일을 각각의 .gz 파일로 압축해 보자.

# ls upgrade/ 
ac.tar              olibc-0.1.0.tar.bz2 
chkrootkit-0.43     os-sim-0.9.1-1.i386.rpm 
chkrootkit.tar.gz   php-mysql-4.1.2-7.3.6.i386.rpm.1 
CODNS_CLIENT.LINUX  redhat 
codns.conf          rrdexec-2.0.1.tar.bz2 
CODNS_LOG_FILE      rrdtool-1.0.46.tar.gz 
db_northway.sql     T_CLIENT_FIFO 
index.html          ZendOptimizer-2.1.0a-Linux_glibc21-i386 
index.html.1        ZendOptimizer-2.tar.gz 
index.html.2 

# gzip -r upgrade 
# ls upgrade/ 
ac.tar.gz              olibc-0.1.0.tar.bz2.gz 
chkrootkit-0.43        os-sim-0.9.1-1.i386.rpm.gz 
chkrootkit.tar.gz      php-mysql-4.1.2-7.3.6.i386.rpm.1.gz 
CODNS_CLIENT.LINUX.gz  redhat 
codns.conf.gz          rrdexec-2.0.1.tar.bz2.gz 
CODNS_LOG_FILE.gz      rrdtool-1.0.46.tar.gz 
db_northway.sql.gz     T_CLIENT_FIFO 
index.html.1.gz        ZendOptimizer-2.1.0a-Linux_glibc21-i386 
index.html.2.gz        ZendOptimizer-2.tar.gz 
index.html.gz 

이는 각각의 파일로 되어 있어 여러 가지로 좋지 않다. tar 명령과 함께 하나의 파일로 다시 압축해 보자.

# guznip -r upgrade 

upgrade 디록토리의 모든 파일을 upgrade.tar.gz의 파일명으로 압축을 한다.

# tar cvfz upgrade.tar.gz upgrade/ 

압축을 풀기 위해서는 다음과 같이 한다.

# tar xvfz upgrade.tar.gz 
2005/06/21 18:49 2005/06/21 18:49
시스템을 안전하게 종료시키는 시스템 관련 명령어

사용법 : halt [-n] [-w] [-d] [-f] 
-n : 종료할 때 sync하지 않는다. 
-w : 실질적으로 종료 하지 않고, /var/log/wtmp 기록을 남긴다 
-d : wtmp 파일에 기록을 남기지 않는다. 
-f : 강제로 종료한다.

Halt 명령은 /var/log/wtmp 파일에 시스템 종료 기록을 남기고, 시스템 종료나 리부팅 작업을 한다. 만약 runlevel이 0이나 6이 아닌 상태의 시스템에서 halt나 reboot명령이 사용되면, shutdown(8) 명령이 호출된다. (-h나 -r 옵션기능을 함)
2005/06/20 20:38 2005/06/20 20:38
하드 디스크, CD-ROM등의 디바이스의 설정을 보고 조절하는 명령어

사용법 : hdparm [옵션] [장치명] 
-a [sectcount]: 파일 시스템 readahead을 설정하거나 정보를 볼 수 있다. 
-A[0 또는 1] : Drive의 read-lookahead 설정을 끄거나 켤 수 있다. 
-c [chipset_mode] : (E)IDE 32-bit I/O 설정을 하거나 정보를 볼 수 있다. 
-C : IDE의 전원 모드 상태를 검사한다. 
-d [0 또는 1] : DMA 기능을 끄거나 켤 수 있다. 
-E : CD-ROM의 속도를 설정한다. 
-f : Device exit를 위해 버퍼 캐쉬(buffer cache)를 동기화시킨다. 
-g : Drive의 geometry를 볼 수 있다. 
-h : 사용법을 보여준다. 
-i : 부트 시간에 얻을 수 있는 Drive의 정보를 볼 수 있다. 
-l : Drive로 부터 직접 Drive 정보를 볼 수 있다. 
-k [0 또는 1]: Keep_settings_over_rest을 설정하거나 정보를 볼 수 있다. 
-K [0 또는 1]: Drive의 Keep_features_over_reset을 설정한다. 
-L [0 또는 1]: Drive의 도어락을 설정한다. 
-m [sectcoun]: Drive의 다중 섹터 수를 설정하거나 정보를 볼 수 있다. 
-p [0~5중 하나]: Drive의 prefetch수를 설정한다. 
-P [sectcount]: 장치의 내부적인 prefetch 구조를 위한 최대 섹터 수를 설정한다. 
-q : 옵션을 화면에 보이지 않는다. -i 옵션 -v 옵션 -t 옵션 -T 옵션에는 적용되지 않는다. 
-r [0 또는 1]: 읽기 전용(read-only)모드로 설정하거나 정보를 보여준다. 
-R : IDE 인터페이스를 등록한다. 
-S [timeout]: 드라이브의 standby (spindown) 시간을 설정한다. 
-T : 캐쉬 읽기 시간을 볼 수 있다. 
-t : 장치 읽기 시간을 볼 수 있다. 
-u [0 또는 1]: 장치의 interrupt-unmask를 설정하거나 정보를 보여준다. 
-U : IDE 인터페이스를 제거한다. 
-v : -i 옵션을 제외하고 모든 설정을 보여준다. 
-W [0 또는 1] : IDE 드라이브의 쓰기-캐쉬(write-caching) 기능을 on/off한다. 
-X [xfermode]: 새로운 (E)IDE/ATA2 드라이브를 위해 IDE 전송 모드를 설정한다. 
-y : IDE 드라이브를 standby 모드로 전환한다. 
-Y : IDE 드라이브를 sleep 모드로 전환한다. 
-Z : seagate auto-powersaving 모드를 disable 시킨다. 

하드디스크의 정보를 보도록 하자. 32-bit I/O을 지원하고, DMA기능을 사용하고 있다.

# hdparm /dev/hda 
/dev/hda: 
 multcount    = 16 (on) 
 I/O support  =  1 (32-bit) 
 unmaskirq    =  0 (off) 
 using_dma    =  1 (on) 
 keepsettings =  0 (off) 
 nowerr       =  0 (off) 
 readonly     =  0 (off) 
 readahead    =  8 (on) 
 geometry     = 2498/255/63, sectors = 40132503, start = 0 
 busstate     =  1 (on) 

시디롬 장치의 DMA 기능을 보도록 하자. using-dma로써 설정이 On이 되어 있다.

# hdparm -d /dev/hdd 

/dev/hdd: 
 using_dma = 1 (on) 

DMA기능을 off로 설정하려면, -d 0 옵션을 사용한다.

# hdparm -d 0 /dev/hdd 

/dev/hdd: 
 setting using_dma to 0 (off) 
 using_dma = 0 (off) 

일부 레드햇 계열 리눅스 배포판이 설치된 시스템에서 LG CDROM 40배속과 48배속을 사용할 경우 CD 인식이 안 되거나 다운 되는 현상이 발생하는 경우가 발견 되었다. 이것은 시스템의 DMA 기능 사용에서 생기는 문제인데 hdparm 명령으로 DMA 사용을 off 시키면 해결된다.

# hdparm -c1 -d0 /dev/cdrom 
2005/06/20 20:35 2005/06/20 20:35
파일의 앞 부분 부터 출력을 원하는 행을 지정하여 출력한다.

사용법 : head [옵션] [파일명] 
-행 수 : 출력을 원하는 행 수를 쓴다. 기본적으로 10을 사용하여 10개의 라인을 출력한다. 
-c, --bytes=SIZE : 출력을 원하는 용량을 정할 수 있다. SIZE는 b(block=512bytes), k(kilo bytes), m(Mega Bytes)을 숫자뒤에 붙여 용량을 구분하여야 한다. 뒤에 단위가 없을 경우 byte단위로 보여준다. 
-n, --lines=행수 : 출력을 원하는 행수를 쓴다. 
-q, --quiet, --silent : 출력 할 때 파일명을 보여 주지 않는다. 
-v, --verbose : 출력하는 파일명을 보여준다. 
--help : 도움말을 보여준다. 
--version : 버전을 보여준다. 

파일의 앞 부분을 보여주는 명령어이다. 보고자 하는 부분을 행수, 용량으로 지정해 줄수 있다. 이 명령은 주로 긴 파일의 앞 부분을 보려고 할 때 많이 쓰이는 것으로, 로그 파일을 확인할 때에도 tail 명령과 함께 많이 이용된다.
head 명령어를 이용하여 mail 파일의 처음 10줄을 읽어 보자. -v 옵션을 사용하면 출력되는 파일명을 먼저 보여준다. 이 옵션은 출력 내용을 파일로 저장할 때 이 저장 내용이 어느 파일의 앞 부분인지를 보여 주도록 표시하는 데 사용할 수 있다.

# head -v /var/mail/root    
==> /var/mail/root <== 
From root  Wed Nov 12 04:03:37 2003 
Return-Path: <root@linux.net> 
Received: (from root@localhost) 
        by linux.net (8.11.6/8.11.6) id hABJ23R02778 
        for root; Wed, 12 Nov 2003 04:02:03 +0900 
Date: Wed, 12 Nov 2003 04:02:03 +0900 
Message-Id: <200311111902.hABJ23R02778@linux.net> 
From: root@linux.net (Cron Daemon) 
To: root@airz.net 
Subject: Cron <root@linux> run-parts /etc/cron.daily 

10개 행으로 이루어진 메일의 서두 부분을 출력해 보았다.
그러면 이번에는 12번째 줄까지 읽어보도록 하겠다. 다음과 같이 직접 읽을 범위를 지정해 보자.

# head -12 /var/mail/root 

파일 용량을 기준으로 일정 용량까지만 읽어들이는 방법도 있다. -c 옵션을 사용한다.

# head -v -c 74 /var/spool/mail/root 

74 bytes의 용량만큼 출력한다.

[관련 명령어]
cat 파일의 첫 라인부터 아랫방향으로 보여준다.
tail 파일의 마지막 행을 보여준다
tac 파일을 마지막 라인부터 위 방향으로 보여준다.
2005/06/20 20:33 2005/06/20 20:33
도메인의 IP를 알고 싶거나 IP에 해당하는 도메인을 알고 싶을 때 사용하는 명령어이다.

사용법 : host [옵션] [도메인, IP] [서버] 
서버 : 도메인이나 IP를 검색할 네임 서버를 지정한다. 지정되지 않을 경우 시스템에 등록된 도메인 서버를 검색한다.(/etc/resolv.conf) 

-l zone : zone 아래 모든 시스템을 출력한다. 
-v : 자세한 정보를 보여준다. 
-w : DNS 서버 응답을 기다린다. 
-r : 반복 처리하지 않는다. 
-d : 디버깅 모드로 보여준다. 
-t [타입] : 타입을 지정하여 정보를 얻는다. 
 (A : 호스트 IP 주소, NS : 검색한 호스트의 nameserver 호스트명, 
 PTR : 도메인 네임 포인터, ANY : 타입의 모든 정보) 
-a : "-t ANY"와 같은 기능을 한다. 

호스트 이름은 알고 있지만 IP address를 모르는 경우, 혹은 그 반대의 경우 사용한다. host를 이용하면 단지 IP address 뿐만 아니라 해당 호스트 네임이 가지고 있는 하위 호스트 네임도 검색이 가능하다. host는 시스템에 등록 되어있는 DNS 서버를 검색한다. 만약, 다른 DNS 서버를 이용하고 싶다면 검색하고 싶은 호스트명/IP address뒤에 서버의 주소를 써준다.
www.yahoo.co.kr의 IP address를 검색하여 이 주소의 검색에 코넷의 DNS를 이용해 보자.
사용하는 DNS 서버의 정보와 검색한 IP address가 출력된다.

# host www.yahoo.co.kr 168.126.63.1 
Using domain server: 
Name: 168.126.63.1 
Address: 168.126.63.1#53 
Aliases: 

www.yahoo.co.kr is an alias for yahoo.co.kr. 
yahoo.co.kr has address 202.43.214.151 

검색하려는 타입을 -t 옵션으로 정해주면 yahoo.co.kr의 네임서버의 도메인을 알 수 있다.

# host -t NS yahoo.co.kr 
yahoo.co.kr name server ns5.yahoo.com. 
yahoo.co.kr name server ns6.yahoo.com. 
yahoo.co.kr name server ns1.yahoo.com. 
yahoo.co.kr name server ns2.yahoo.com. 
yahoo.co.kr name server ns3.yahoo.com. 
yahoo.co.kr name server ns4.yahoo.com. 
2005/06/20 20:32 2005/06/20 20:32
호스트 ID를 지정하거나 보여주는 명령어

사용법 : hostid [옵션] 
--help : 간단한 도움말을 보여준다. 
--version : 버전을 보여준다. 

hostid 명령은 현재 호스트 ID 번호를 16진수로 보여준다. 이때 -v 옵션이 주어지면, 이 번호를 10진수와 16진수 두개로 보여준다. 이것은 그 호스트의 고유번호이며, 다른 호스트들과 구별할 때, 인터넷 주소를 부여할 때 사용된다.

# hostid 
283d70e9 

이 값은 시스템 관리자가 명령행 인자를 사용해서 새롭게 지정할 수 있는데, 이 값은 /etc/hostid 파일에 저장되고 필요할 경우에 읽혀진다.
2005/06/20 20:31 2005/06/20 20:31
시스템 이름을 확인하고 설정하는 명령이다.

사용법 : hostname [옵션] 파일명 
-a, --alias : alias 명을 보여준다. 
-d, --domain : 도메인을 보여준다. 
-F, --file 파일명 : 파일로 부터 호스트 이름을 받아서 설정한다. 
-f, --fqdn, --long 
-h, --help : 도움말을 보여준다. 
-i, --ip : 호스트의 IP address를 보여준다. 
-n, --node : Display the DECnet node name 
-s, --short : 짧은 호스트 이름을 보여준다. FQDN에서 앞에 첫 번째 점 전 부분을 보여준다. 
-V, --version : 버전을 보여준다. 
-v, verbose : 호스트 설정이나 호스트 이름을 자세히 보여준다. 
-y, --yp, --nis : NIS 도메인 이름을 보여준다. 또한 파일을 받아와 NIS 도메인 이름을 설정할 수 있다. 

시스템 이름을 보여준다. 또한 변경할 수도 있다. 옵션이 없는 기본형으로 사용하면 FQDN 형태로 출력된다.

# hostname -v 
gethostname()=redhat.linux.com' 
www.kingdom.com 

호스트 이름을 변경한다.

# hostname -v ftp.kingdom.com 
Setting hostname to ftp.kingdom.com' 
2005/06/20 20:30 2005/06/20 20:30
사용자의 UID, GID 번호 및 현재 셀에서의 ID 정보를 보여준다.

사용법 : id [옵션] [사용자명] 
-g, --group : 사용자의 그룹 ID만 보여준다. 
-G. --groups : 추가 그룹의 ID만 보여준다. 
--help : 사용법을 보여준다. 
-n, --name : -u, -g, -G 옵션과 같이 쓰여 해당하는 ID의 이름만을 보여준다. 
-r, --real : -u, -g, -G옵션과 같이 쓰여 해당하는 실제 ID를 보여준다. 
--version : 버전정보를 보여준다. 

id 명령어는 현재 사용자의 실제 ID와 유효 사용자 ID, 그룹 ID를 보여준다. 내부 bash변수인 $UID, $EUID, $GROUPS와 짝을 이룬다. 만일 사용자를 지정하면 해당하는 사용자의 정보를 보여주게 된다.
id 명령으로 현재 로그인한 admin 계정에 대해 정보를 살펴보자.

# id 
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),1) 

이 내용은 로그인된 사용자는 root계정이고 uid는 0,gid가 0 이다.
echo $UID 명령으로 현재 root 계정의 uid를 알아 볼 수도 있다.

# echo $UID 
0 
2005/06/20 20:29 2005/06/20 20:29
이더넷 카드와 네트워크 환경을 설정하는 명령어이다.

사용법 : ifconfig [인터페이스] 
           ifconfig 인터페이스 [타입]옵션 | 주소 
인터페이스 : 인터페이스 이름. 대개 NIC이 설정이 되어 있다면, eth0, eth1이 되며, PPP로 연결되어 있따면 PPP0, PPP1의 이름이 된다. 
타입 : 지정한 인터페이스에서 사용할 프로토콜을 지정한다. 현재 지원되는 것으로는 inet(TCP/IP을 사용할 경우), INET6(ipV6), AX25(AMPR Packet Radio), d에 (Appletalk Phase 2), ipx (Novell IPX) 등이 있다. 
up : 지정한 인터페이스를 활성화한다. 
down : 지정한 인터페이스를 비활성화한다. 
[-]arp : ARP 프로토콜을 활성화/비활성화한다. 
[-]promisc : promiscuous 모드를 활성화/비활성화한다. promiscuous모드를 활성화하면 인터페이스를 지나가는 모든 패킷을 받는다. 
[-]allmulti : all-multicast mode 모드를 활성화/비활성화한다. all-multicast모드를 활성화하면 인터페이스를 지나가는 모든 패킷을 받는다. 
metric N : 인터페이스 metric을 설정한다. 
mtu N : 인터페이스 MTU를 설정한다. 
dstaddr addr : PPP 원격 IP 어드레스를 설정한다. 
netmask addr : 인터페이스의 넷마스크를 설정한다. 
add addr/prefixlen : 인터페이스에 IPv6 어드레스를 부여한다. 
del addr/prefixlen : 인터페이스에 IPv6 어드레스를 제거한다. 
irq addr : 디바이스에 irq 주소를 지정한다. 
io_addr addr : 디바이스의 IO 주소를 지정한다. 
mem_start addr : 디바이스의 공유 메모리 시작 주소를 지정한다. 
media type :  디바이스의 물리적 타입을 설정한다. 물리적 타입에는 10base2 (thin Ethernet), 10baseT (twisted-pair 10Mbps Ethernet), AUI (external transceiver) 등등이 있다. 
[-]broadcast [addr] : 인터페이스의 브로드캐스트 주소를 설정한다. 
[-]pointopoint [addr] : 인터페이스의 point-to-point 모드를 활성화하고, 주소를 설정한다. 
hw class address : 인터페이스의 하드웽어 주소를 설정한다. 
multicast : 인터페이스를 멀티 캐스트 플래그로 설정한다. 
address : 인터페이스에 IP 주소를 설정한다. 
txqueuelen length : 디바이스의 전송 큐 길이를 설정한다. 

ifconfig는 보통 네트워크 인터페이스의 설정을 변경하기 위해 사용한다. 먼저 -as 옵션으로 설정되어 있는 인터페이스를 살펴보자.

# ifconfig -a 
eth0      Link encap:Ethernet  HWaddr 00:5F:8B:A3:C7:3B  
          inet addr:211.123.55.32  Bcast:211.123.55.127  Mask:255.255.255.128 
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1 
          RX packets:20120837 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:22185707 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:1000 
          RX bytes:3802383154 (3626.2 Mb)  TX bytes:733381973 (699.4 Mb) 
          Interrupt:5 Base address:0x3000 Memory:c6fff000-c6fff038 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0 
          UP LOOPBACK RUNNING  MTU:16436  Metric:1 
          RX packets:7552 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:7552 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:0 
          RX bytes:1365238 (1.3 Mb)  TX bytes:1365238 (1.3 Mb) 

IP 설정
eth1 인터페이스에 아래와 같이 네트워크 IP와 넷마스크를 설정해보자.

# ifconfig eth1 192.168.0.1 netmask 255.255.255.0 

인터페이스 활성화하기
eth1 인터페이스를 활성화한다.

# ifconfig eth1 up 

아래와 같이 ifup명령으로도 활성화가 가능하다.

# ifup eth1 

인터페이스 비활성화 하기
eth1 인터페이스를 비활성화하기 위해서는 다음과 같이 입력한다.

# ifconfig eth1 down 

기본 게이트웨이 설정
기본 게이트웨이를 211.255.253.62로 설정해보자.

# route add -net default gw 211.255.253.62 
2005/06/20 20:28 2005/06/20 20:28
일반적인 시스템 설명에 하이퍼 텍스트적인 기능이 추가된 메뉴얼

사용법 : info [옵션] 항목 
--directory 경로이름 : 경로이름을 추가하여 info 문서를 찾을 수 있는 디렉토리 경로가 추가 된다. 기본값은 /usr/info 혹은 /usr/local/info 디렉토리이다. 
-f file, --file file : 지정한 file으로 info 파일을 보여준다. 
-n node, --node node : 지정한 node로 노드의 파일을 보여준다. 
-o file, --output file : 화면으로 결과를 보여주지 않고, 지정한 file으로 결과를 복사한다. 
--help : 도움말을 보여준다. 
--version : 버전정보를 보여준다. 

info 는 운영 시스템 및 연관된 프로그램에 대한 문서를 제공한다. 여기 info 파일은 대부분 /usr/local/info 혹은 /usr/info 디랙토리에 포함되어 있다. 또 하나 대표적인 것으로 man 명령어로 메뉴얼 페이지를 참조하는 명령어가 있다.
info가 실행되면 다음과 같은 명령을 사용할 수 있다.

h - info에 대한 이용법을 호출한다.
? - info에 대한 명령어 요약을 보여준다.
Ctrl-g - 작업 진행 중지, 명령 취소.
Ctrl-l - 화면을 새롭게 생긴한다.

다른 노드로 이동하기
n - 다음 노드로 (next)
p - 이전 노드로 (previous)
u - 위 노드로 (up)
m - 특정 노드를 지정하여 지정한 노드로 이동한다. 이 때 정확한 노드 이름을 입력할 필요는 없다.
f - 상호 참조 사용. 이 글쇠를 누르면 상호 참조할 이름을 물어본다.
이때 m 글쇠 사용법과 같이 사용하면 된다.
l - 마지막 노드로 이동한다.

노드 안에서의 이동하기
Space - 한 화면 아래로(다음으로, 앞으로) 이동.
DEL - 한 화면 위로(이전으로, 뒤로) 이동.
b - 노드의 처음으로

고급 명령
q - info를 종료한다.
1 - 노드 안에 있는 차림표의 첫 번째 항목으로 이동한다. 숫자를 지정하게 되면 지정한 항목으로 이동하게 된다.
g - 지정한 특정 노드로 이동한다.
s - 문자열을 찾기 위해 하단에 문자열 입력 창을 띄운다. 현재 노드에서 지정한 문자열을 찾아 발견되면, 그곳으로 커서를 이동한다.

아직은 man에 비해 잘 사용되지 않는 명령이지만, 그 편리함으로 점검 사용 저변을 넓혀가고 있다.
2005/06/20 20:26 2005/06/20 20:26
부팅시 실행 레벨에 따라 여러 프로세스를 호출하여 시작한다.

사용법 : /sbin/init [-t sec] [0123456SsQq] 
0,1,2,3,4,5,6 : 각각의 런 레벨로 다시 시작한다. 각 레벨은 /etc/inittab에서 확인할 수 있다. 
Q or q : /sbin/init가 /etc/inittab 파일을 다시 읽는다. 
S or s : /sbin/init에게 단일 사용자 모드로 전환한다. 
-t sec : 지정한 sec 초만큼 init가 TERM 시그날을 보내고 나서 몇 초를 기다린 후, KILL signal를 보낸다. 초기값은 5초다. 

커널이 메모리에 적재되면 뒤이어 init 명령이 실행된다.
init는 자신을 fork하여 여러 프로세스를 시작하고, 프로세스를 시작하는 스크립트를 호출한다. 우선적으로 /etc/inittab을 읽어 시스템의 실행 레벨을 결정하고 로긴을 위한 getty 프로그램을 실행시키며, 여러 가지 데몬을 뛰운다.
실행 레벨은 아래와 같이 리눅스 계열마다 다를 수 있지만, 레드햇 기준으로 아래와 같다. initdefault로 실행레벨을 5로 지정하였는데, 5는 X11로 실행하면 된다. 만일 콘솔 모드로 부팅하고 싶다면 id:5:initdefault를 id:3:initdefault로 변경하면 된다.
#Run gettys in standard runlevels 주석 아래의 mingetty는 로그인을 관리하는 getty류 명령어이다. 런 레벨 5로 부팅 후, ctrl+alt+F1부터 F6키를 입력하게 되면 각각의 콘솔 로그인 화면을 볼 수 있는 것은 이런 의미이다. 만일 콘솔화면을 중이고 싶다면, 원하는 숫자만 남겨두고, 나머지는 모두 삭제하거나 앞줄에 주석(#)처리한다.
inittab 파일을 수정 후에는 init-q 명령으로 수정된 내용을 적용할 수 있다.
inittab 파일의 맨 마지막 줄의 x:5:respawn:/etc/X11/prefdm -nodaemon은 실행 레벨 5에서의 X윈도우 로그인 프로그램을 실행하는 것이다.

# cat /etc/inittab 
# Default runlevel. The runlevels used by RHS are: 
#   0 - halt (Do NOT set initdefault to this) 
#   1 - Single user mode 
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking) 
#   3 - Full multiuser mode 
#   4 - unused 
#   5 - X11 
#   6 - reboot (Do NOT set initdefault to this) 
# 
id:3:initdefault: 

# System initialization. 
si::sysinit:/etc/rc.d/rc.sysinit 

l0:0:wait:/etc/rc.d/rc 0 
l1:1:wait:/etc/rc.d/rc 1 
l2:2:wait:/etc/rc.d/rc 2 
l3:3:wait:/etc/rc.d/rc 3 
l4:4:wait:/etc/rc.d/rc 4 
l5:5:wait:/etc/rc.d/rc 5 
l6:6:wait:/etc/rc.d/rc 6 

# Trap CTRL-ALT-DELETE 
ca::ctrlaltdel:/sbin/shutdown -t3 -r now 

# When our UPS tells us power has failed, assume we have a few minutes 
# of power left.  Schedule a shutdown for 2 minutes from now. 
# This does, of course, assume you have powerd installed and your 
# UPS connected and working correctly.  
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" 

# If power was restored before the shutdown kicked in, cancel it. 
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" 


# Run gettys in standard runlevels 
1:2345:respawn:/sbin/mingetty tty1 
2:2345:respawn:/sbin/mingetty tty2 
3:2345:respawn:/sbin/mingetty tty3 
4:2345:respawn:/sbin/mingetty tty4 
5:2345:respawn:/sbin/mingetty tty5 
6:2345:respawn:/sbin/mingetty tty6 

# Run xdm in runlevel 5 
x:5:respawn:/etc/X11/prefdm -nodaemon 

#SV:123456:respawn:/command/svscanboot 
 
2005/06/20 20:25 2005/06/20 20:25