파일을 복사하고 압축하는 명령어.

사용법 : 
cpio -o, --create [옵션] : 표준 입력으로 받는 파일 리스트를 압축의 파일 출력 형태로 복사한다. 
cpio -i, --extract [옵션] [패턴] : 지정한 패턴의 형태에 맞는 압축파일에서 입력을 받아 압축을 푼 파일로 복사한다. 
cpio -p, --pass-through [옵션] 디렉토리 : 동일한 시스템에서 지정한 다른 디렉토리로 파일을 복사한다. 

-0, --null : 파일명의 끝이 뉴라인이 아니라 널로 끝이 난다. 
-a, --reset-access-time : 파일 접근 시간을 재 설정한다. 
-A, --append : 압축된 파일에 파일을 추가한다. -o 옵션에만 작동한다. 
-B : I/O 블록을 5120 bytes로 지정한다. 초기치는 512 bytes이다. 
--block-size=BLOCK-SIZE : I/O 블록사이즈를 BLOCK_SIZE * 512 bytes로 지정한다. 
-c : SVR4 포맷을 사용하기 위해 "-H newc" 옵션을 이용한다. 이전의 ASCII 포맷을 사용하려면, "-H odc"을 사용한다. 
-C IO-SIZE,--io-size=IO-SIZE : I/O 블록 사이즈를 지정한 IO-SIZE로 지정한다. 
-d, --make-directories : 지정한 디렉토리를 생성한다. 
-E FILE, --pattern-file=FILE : -i- 옵션에서 사용하며, 지정한 패터의 형식에 맞는 파일을 읽는다. 
-f, --nonmatching : 주어진 패턴에 상관없이 파일을 복사한다. 
-F, --file=archive : 표준 입력이나 표준 출력 대신 주어진 파일이름으로 압축한다. 
--force-local: -F, -I, -O 옵션과 함께 압축된 파일을 로컬 파일로 인식한다. 
-H FORMAT, --format=FORMAT : 주어진 FORMAT 형식으로 압축한다. 
    bin : 바이너리 형식 
    odc : 옛 POSOX 이식 형식 
    newc : 새로운 SVR4 이식 형식 
    crc : 새로운 SVR4 이식 형식에 체크섬 추가 
    tar : tar 형식 
    ustar : POSIX.1 tar 형식 
    hpbin : HPUX의 cpio에 쓰이는 바이너리 형식 
    hpodc : HPUX의 cpio에 사용되는 이식 형식 
-I archive : 표준입력 대신 archive 파일명을 쓴다. 복구시 다중 볼륨을 효과적으로 처리할 수 있다. 
-l, --link : 복사하기 보다 파일을 링크한다. 
-L, --dereference : 링크를 복사하는 것이 아니라 원본 파일을 복사한다. 
-m, --preserve-modification-time : 파일을 만들 때 파일 수정횟수를 같이 보존한다. 
-M MESSAGE, --message=MESSAGE : 테이프나 플로피 디스크와 같이 미디어 백업 크기에 도달했을 때, 지정한 MESSAGE를 보여 준 후 프롬프트를 뛰워 새로운 것을 삽입하게 한다. 
-n, --numeric-uid-gid : 실행시 작동되는 상세 파일이름을 보여 주는 것이 아니라, UID와 GID를 보여준다. 
-O archive : 표준출력 대신 archive 파일이름을 사용한다. 백업이나 파일 보관시 다중 볼륨을 효과적으로 처리할 수 있다. 
--quiet : 복사된 블록 개수를 보여주지 않는다. 
-r, --rename : 상호 대화식으로 파일을 다시 지정한다. 
-R [user][:.][group],--owner [user][:.][group] : -o 과 -p 옵션에서 지정한 소유권으로 파일을 생성한다. 
-t, --list : 입력 목차 테이블을 출력한다. 
-u, --unconditional : 이전의 파일이 있던지 없던지 상관없이 무조건 파일을 복구한다. 
-v, --verbose : 실행동안 파일들을 보여 주거나, -t 옵션과 함께 쓰여 ls -l 스타로 리스트를 보여준다. 
--version : cpio 버전을 출력한다. 

cpio 시스템 백업에 자주 사용되는 명령어이다. 이는 복잡한 백업 전략과 융통성을 지원한다.
이러면 /targetdir의 모든 것이 /hdc1의 파티션으로 모두 복사된다.
백업 장치인 /dev/ftape에서 파일을 복구해 보자.

# cd /home/ 
# cpio -itvcdumB < /dev/ftape 
2005/06/21 20:42 2005/06/21 20:42
사용자의 개별 crontab 파일 관리를 위한 명령어

사용법 : crontab [-u 사용자ID] 파일, crontab [-u 사용자ID] {-l|-r|-e} 
-l : 현재 crontab 내용을 표준 출력으로 보여준다. 
-r : 현재 crontab 내용을 지운다. 
-e : .crontab 파일의 내용을 편집한다. 편집기는 VISUAL이나 EDITOR 환경변수의 편집기를 사용한다. 

crontab은 지정한 시간에 지정한 작업을 하도록 설정하기 위한 주기적인 작업 스케쥴이다. 이에 반해 at 명령은 지정한 시간에 한번만 작업이 시행된다.
crontab 설정 파일은 /etc/crontab 이다.

# cat /etc/crontab 
SHELL=/bin/bash 
PATH=/sbin:/bin:/usr/sbin:/usr/bin 
MAILTO=root 
HOME=/ 

# run-parts 
01 * * * * root run-parts /etc/cron.hourly 
02 4 * * * root run-parts /etc/cron.daily 
22 4 * * 0 root run-parts /etc/cron.weekly 
42 4 1 * * root run-parts /etc/cron.monthly 

0-59/5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg 

그럼, root 계정에 새로운 작업 스케줄을 등록해 보자.
먼저 이전에 crontab에 설정되어 있는 작업이 있는지 확인해 보자. 등록된 작업은 없다.

# crontab -l 
no crontab for root 

-e 옵션으로 편집을 하게 되면, 편집기가 실행되어 새로운 cron 작업을 등록할 수 있다.

# crontab -e 
no crontab for root - using an empty one 

다음과 같이 입력해 보자.

0 4 * * * echo crontab testing 

저장하고 나오게 되면 아래의 메세지를 볼 수 있을 것이다.

"crontab.1314" 1L, 31C written 
crontab: installing new crontab 

그럼, 등록된 작업을 -l 옵션으로 살펴보자

# crontab -l 
# DO NOT EDIT THIS FILE - edit the master and reinstall. 
# (/tmp/crontab.1314 installed on Tue Mar 30 18:51:41 2004) 
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) 
0 4 * * * echo crontab testing 

cron 스케줄에 등록하는 시간지정에 대한 각 항목은 다음과 같다.
분(Minutes) 0-59
시(Hour) 0-23
일(Day of month) 1-31
월(Month) 1-12 or Jan, Feb, Mar,...
요일(Day of week) 0-6(0은 Sunday) or Sun, Mon, Tue,...
2005/06/21 20:41 2005/06/21 20:41
지정하는 기준을 바탕으로 파일을 자동으로 나누어 주는 명령, 내용이 긴 문서 파일을 효과적으로 나누어 읽을 수 있게 한다.

사용법 : csplit [옵션]... 파일 인자... 
- : 표준입력으로부터 입력을 받는다. 
-b suffix, --suffix-format=suffix : 새롭게 생성되는 파일의 접미사를 지정한다. 
  보통 파일은 00,01로 시장해서 99까지 생성된다. 아래와 같은 형식 지정이 가능하다. 
   %d 부호 있는 10진수 
   %i %d와 같다 
   %u 부호 없는 10진수 
   %o 8진수 
   %x 16진수 
   %X %x와 같다. 
-f prefix,--prefix=prefix : 새롭게 생성되는 파일의 접두사를 지정할 수 있다. 
   prefix00에서 prefix99까지 중 prefix부분을 지정하는 것이다. 
-k, --keep-files : 생성 도중 에러가 발생하여도, 새롭게 생성된 파일들을 유지한다. 
-n, --digits=num : 생성되는 파일의 길이를 지정한다. 기본값은 2자리이다. 
-s, --quiet,--silent : 문자 개수를 보여주지 않는다. 
-z, --elide-empty-files : 빈 파일을 제거한다. 
--help : 도움말을 보여준다. 
--version : 버전정보를 보여준다. 

csplit는 파일내의 내용들 중 지정하는 기준을 바탕으로 여러개의 파일로 분리 생성하는 기능을 한다. 아래에 csplit 명령어 파일명 다음 올 수 있는 인자들을 설명하였다.
이 인자는 파일들을 나눌 기준으로 생각하면 된다.
n : 현재 라인부터 n번째 라인까지의 범위를 파일로 생성한다.

정규표현식/[+n/-n] : 현재 라인부터 정규표현식을 포함하는 라인까지 파일을 생성한다. +n이면 정규표현식을 기준으로 n번째 줄까지 더 포함하며, -n이면 정규표현식을 기준으로 n번째 줄까지를 제외하게 된다.
%정규 표현식%/[+n/-n] : 정규 표현식의 라인 앞 부분은 저장되지 않는다.
{n} : n번 반복한다.
{*} : 입력이 있을 때까지 반복한다.

예제를 통해 알아보자. 다음에 볼 수 있는 song.txt 파일은 노래 가사를 저장해놓은 것이다. 이 노래들을 각각의 파일로 나누어 저장해 보겠다.

# cat song.txt 
song.1 
어린시절 우리 고왔던 
시간 저 편의 추억들은 
잃어버렸뜬 날들의 크기만큼 
사라져갔지 서로의 약속을 잊고 

song.2 
늘 행복하기를 모두 바라고 있어 
수많은 축복에 미소지는 
아름다운 내사랑 
새햐얀 웨딩 드레스 입고서 
눈시울 적시던 너 

song.3 
부드러운 손길 달콤한 속삭임 
내가 원한 것은 그것만은 아니었지 
내가 바란 것은 당신이 아니라 
내 환상일 뿐 

이 파일을 각 챕터 별로 나누어 보겠다.

# csplit songtxt %song.1% /song.2/ /song.3/ 
111 
120 
111 

csplit 명령으로 xx00,xx01,xx02 파일이 생성되었다.

# cat xx00 
song.1 
어린시절 우리 고왔던 
시간 저 편의 추억들은 
잃어버렸뜬 날들의 크기만큼 
사라져갔지 서로의 약속을 잊고 

# cat xx01 
song.2 
늘 행복하기를 모두 바라고 있어 
수많은 축복에 미소지는 
아름다운 내사랑 
새햐얀 웨딩 드레스 입고서 
눈시울 적시던 너 

# cat xx02 
song.3 
부드러운 손길 달콤한 속삭임 
내가 원한 것은 그것만은 아니었지 
내가 바란 것은 당신이 아니라 
내 환상일 뿐 

새로 생성되는 파일의 숫자는 00부터 시작한다는 것에 주의하자.
2005/06/21 20:39 2005/06/21 20:39
파일에서 원하는 필드를 뽑아내는 명령어

사용법 : cut [OPTION]... [FILE]... 
-b, --bytes=LIST : 바이트 단위로 나타낸다. 
-c, --characters=LIST : 문자단위로 나타낸다. 
-d, --delimiter=DELIM : 기본 필드 구분자는 TAB이지만 이를 사용하지 않고 지정된 필드 구분자를 사용한다. 
-f, --fields=LIST : 지정한 필드만을 보여준다. 
-s, --only-delimited : 필드구분자에 포함되지 않는 라인은 보여주지 않는다. 
--output-delimiter=STRING : 출력되는 필드구분자를 지정된 것을 사용한다. 
--help : 도움말 정보를 보여준다. 
--version : 버전 정보를 보여준다. 

cut 명령어는 awk에서 print $N과 비슷하지만, awk보다 더 간단하게 사용될수있다. -b,-c,-f 옵션에서는 다음과 같이 특정 숫자 범위를 사용할 수 있다.
N : N번째
N- : N번째부터 마지막까지의 범위
N-M : N번째부터 M번째지의 범위
-M : 첫번째부터 N번째까지의 범위

a. OS와 커널 버전 얻기.

# uname -a 
Linux airz.net 2.4.20-28.7 #1 Thu Dec 18 11:31:59 EST 2003 i686 unknown 

# uname -a | cut -d ' ' -f1,3 
Linux 2.4.20-28.7 

b. 마운트된 파일 시스템 목록 얻기

# cat /etc/mtab | cut -d ' ' -f1,2 
/dev/hda8 / 
none /proc 
usbdevfs /proc/bus/usb 
/dev/hda1 /boot 
none /dev/pts 
/dev/hda3 /home 
none /dev/shm 
/dev/hda2 /tmp 
/dev/hda7 /var 
/dev/hdb1 /hdb1 
/dev/hdb2 /hdb2 
/dev/hdc1 /hdc1 
2005/06/21 20:37 2005/06/21 20:37
필요에 따라 시간과 날짜를 다양한 포맷으로 출력하는 명령어이다.

사용법 : date [옵션] [+포맷] [날짜] 
       -d, --date date : 지정한 date 값과 같이 시간과 날짜를 보여준다. 
       -f, --file=datedate : 지정한 날짜 파일에서 각각의 줄에 대한 날짜를 보여준다. 
       -I, --iso-8601[=TIMESPEC] : ISO-8601 포맷으로 보여준다. 만일 timespec를 지정하였다면, 날짜나 시, 분, 초에 대한 값 중 하나를 보여준다. 
       -r, --reference=FILE : 지정한 파일이 마지막으로 수정된 날짜를 보여준다. 
       -R, --rfc-822 : RFC-822 데이트 문자열로 보여준다. 
       -s, --set=STRING : 지정한 string으로 시간을 맞춘다. 
       --version : 버전정보를 보여준다. 

date는 시간과 날짜를 알려 준다. 만일 옵션이 없으면, 시스템의 현재 시간과 날짜를 보여주며, +로 시작되는 옵션이 있으면 지시하는 형태대로 보여주게된다.
기본 출력은 다음과 같다.

# date 
2002. 07. 01. (월) 20:09:50 KST 

%j는 현 시스템의 년도에서 오늘 날짜까지 며칠이 지났는지 알 수 있다.

# date +%j 
182 

%H는 현재의 시간을 24시간제로 보여주며,%M은 분을 보여준다.
또한 다음과 같은 방법으로 오늘 날짜의 연월일을 형식을 지정하여 표현할 수도 있다.

# date +%H%M 
2009 
# date +%Y-%m-%d 
2002-07-10 

--date 옵션으로 현재 시간에 15일 후의 날짜를 알 수 있다.

# date --date '15 days day' 
2002. 07. 17. (수) 20:18:24 KST 

그럼, 현재 시간에서 3년 2개월 전은 날짜가 어떻게 될까?

# date --date '3years 2months ago' 
1999. 05. 01. (토) 20:19:48 KST 

또한 이와 같은 날짜의 출력 결과를 다냥한 포맷으로 출력할 수 있다. 이 포맷을 다양하게 조합하여 자기만의 출력 결과를 만들 수도 있으며, 셸 스크립트와 cron을 이용하여 백업이나 기타 작업을 할 때 셸 스크립트에서 date 명령을 이용하여 작업한 날짜와 시간의 이름으로 파일을 만들도록 지정할 수도 있다.

       %      % 문자 그 자체 
       -      필드를 채우지 않는다.(기본적으로 0으로 채운다) 
       _      필드를 공백으로 채운다. 
       n      줄바꿈 
       t      수평 탭 

시간 필드: 
       %H     시 (00..23) 
       %I     시 (01..12) 
       %k     시 ( 0..23) 
       %l     시 ( 1..12) 
       %M     분 (00..59) 
       %p     로케일의 AM 또는 PM 
       %r     시간, 12-시간제 (hh:mm:ss [AP]M) 
       %s     1970-01-01  00:00:00  UTC  (비표준 확장기능)로 부터 
              경과된 초 
       %S     초 (00..61) 
       %T     시간, 24-시간 (hh:mm:ss) 
       %X     로케일에서 정의한 시간 표현(%H:%M:%S) 
       %Z     시간대 (에, EDT), 시간대를 결정할 수 없는 때는 아무 
             값도 출력하지 않는다. 

날짜 필드: 
       %a     로케일의 약식 요일 이름 (Sun..Sat) 
       %A     로케일의  완전한 요일 이름, 가변 길이 (Sunday..Sat- 
             urday) 
       %b     로케일의 약식 월 이름 (Jan..Dec) 
       %B     로케일의 완전한 월 이름, 가변 길이 (January..Decem- 
             ber) 
       %c     로케일의 날짜와 시간 (Sat Nov 04 12:02:33 EST 1989) 
       %d     월 중 일 (01..31) 
       %D     날짜 (mm/dd/yy) 
       %h     %b 와 동일 
       %j     연 중 일 (001..366) 
       %m     월 (01..12) 
       %U     연 중 주  번호,  일요일을  주의  첫번째  날로  생각 
             (00..53) 
       %w     요일 번호 (0..6), 0 은 일요일 
       %W     연  중  주  번호,  월요일을  주의  첫번째 날로 생각 
             (00..53) 
       %x     로케일의 날짜 표현식 (mm/dd/yy) 
       %y     연 중 일의 마지막 두 숫자 (00..99) 
       %Y     연 (1970...) 
2005/06/21 20:36 2005/06/21 20:36
부트 플로피나 스왑 파일을 만드는 등의 특수한 복사를 하는 명령어이다.

사용법 : dd [옵션] 
--help : 도움말을 보여준다. 
--version : 버전 정보를 보여준다. 
of=file : 표준 출력 대신에 지정한 파일에 작성한다. 
if=file : 표준  입력 대신에 지정한 파일에서 불러들인다. 
ibs=size : 지정한 사이즈만큼 읽는다. 
obs=size : 지정한 사이즈만큼 쓴다. 
bs=size : 지정한 사이즈 만큼 읽고 쓴다.(ibs,obs 값은 무시된다) 
count=n : 입력 블록의 ibs 크기만큼 복사한다. 
conv=ebcdic : ASCII코드를 EBCDIC 코드로 변환한다. 
conv=ibm : ASCII 코드를 호환 EBCDIC 코드로 변환한다. 
conv=swab : 입력되는 두 바이트의 순서를 바꾼다. 입력 파일에서 짝이 맞지 않는 하나의 바이트가 남으면, 마지막 바이트는 그냥 단순히 복사된다. 

dd 명령어는 변환 과정을 거쳐 파일 혹은 표준 입출력을 복사한다. ASCII-EBCDIC간 변환, 대소문자간 변환, 입출력 바이트 쌓을 바꾸거나 입력 파일의 처음이나 끝을 건너뛰거나 잘라내서 출력파일을 만드는 등의 다양한 변환을 할 수 있다. 백업에서처럼 대량 데이터를 복사할 때도 사용한다. dd는 파일 내용을 장치에 그대로 쓴다.

1.44인치 부트 플로피 만들기

# pwd 
/boot 
# dd if=kernel-image of=/dev/fd0 bs=1440 

kernel-image는 /boot 디렉토리에 있는 커널 이미지 이름을 지정한다.

512M의 스왑파일 만들기

# dd if=/dev/zero of=/swap bs=1024 count=524288 
# mkswap /swap 524288 
# sync 
# swapon /swap 

free 명령으로 작성된 스왑파일을 확인한다.

# free 

[관련 명령어]
tar 빠르고 간단한 파일 묶기 명령어
cpio 시스템 백업에 사용하는 명령어
mt 자기테이프 조작 명령어
2005/06/21 20:35 2005/06/21 20:35
ext2 파일시스템 디버거로, 파일 시스템을 직접 확인하며 제어할 수 있다.

사용법 : debugfs [[-옵션] 장치명] 
-w 읽기/쓰기 모드로 파일시스템을 연다. 

debugfs은 상호 대화형 디버거이다. debugfs 명령어를 실행한 다음, 다음과 같은 명령어들을 사용할 수 있다.

       cat <화일명> 
             아이노드 하나의 내용을 표준출력으로 덤프한다. 
       cd <디렉토리> 
             작업 디렉토리를 변경한다. 
       chroot <디렉토리> 
              지정한 아이노드로 루트 디렉토리를 변화시킨다. 
       close  열려진 화일 시스템을 닫는다. 
       clri <화일명> 
              file 에 해당하는 아이노드의 내용을 지운다. 
       dump <화일명> <출력 화일명> 
              아이노드의 내용을 화일로 덤프한다. 
       expand_dir <화일명> 
              디렉토리를 확장한다. 
       find_free_block [목표] 
              목표   로부터   시작해서   첫번째  빈  블럭을  찾아 
              할당한다. 
       find_free_inode [dir [mode]] 
              빈 아이노드를 찾아서 할당한다. 
       freeb <블럭> 
              블럭을 할당되지 않은 것으로 표시한다. 
       freei <화일명> 
              화일명 에 해당하는 아이노드를 해제한다. 
       help   debugfs(8) 가 인식하는 명령어 목록을 출력한다. 
       icheck <블럭> 
              블럭 --> 아이노드 변환을 수행한다. 
       iname <아이노드> 
              아이노드    에    해당하는    화일명을    출력한다. 
              (현재로서는 구현되어 있지 않음 - ncheck 을 참고). 
       initialize <장치명> <블럭크기> 
              장치명 에 ext2 화일 시스템을 생성 
       kill_file <화일명> 
              화일을 삭제하고 사용한 블럭을 해제한다. 
       ln <원본 화일> <목표 화일> 
              링크를 만든다. 
       ls [경로명] 
              ls(1) 명령을 에뮬레이트한다. 
       modify_inode <화일명> 
              화일명 에 해당하는 아이노드의 내용을 수정한다. 
       mkdir <화일명> 
              디렉토리를 생성한다. 
       mknod <화일명> [p|[[c|b] <major> <minor>]] 
              특별한 장치 화일을 생성한다. 
       ncheck <아이노드> 
              아이노드 --> 이름 변환을 수행한다. 
       open [-w] <장치명> 
              화일 시스템을 연다. 
       pwd    현재 작업 디렉토리를 출력한다. 
       quit   debugfs 를 종료 
       rm <화일명> 
              화일을 지운다. 
       rmdir <디렉토리> 
              디렉토리를 삭제한다. 
       setb <블럭> 
              블럭을 할당된 것으로 표시한다. 
       seti <화일명> 
              화일명   에   해당하는   아이노드를  사용  중이라고 
              표시한다. 
       show_super_stats 
              수퍼블럭의 내용을 보여준다. 
       stat <화일명> 
              화일명 에 해당하는 아이노드의 내용을 덤프한다. 
       testb <블럭> 
              블럭이 할당되어 있다고 표시되어 있는지 확인 
       testi <화일명> 
              화일명  에  해당하는  아이노드가  할당되어   있다고 
              표시되어 있는지 확인 
       unlink <화일> 
              링크를 지운다. 
       write 원본 화일 <화일명> 
              화일명  을  갖는  화일  시스템에 화일 하나를 만들고 
              나서 원본 화일 의 내용을 목표 화일에 복사한다.
2005/06/21 20:33 2005/06/21 20:33
커널 모듈을 로드하기 위한 의존성 관계를 다루는 명령어

사용법 : depmod [옵션] 모듈명 
-a : /etc/modules.conf 에 있는 모든 모듈의 의존성을 생성한다. 
-d : 디버그 모드. 
-e : 해결되지 않는 각 모듈의 리스트를 보여준다. 
-v : 처리된 모듈의 모든 리스트를 보여준다. 

depmod 명령어는 커널 모듈의 의존성의 관계를 다루는 명령어이다. 이와 관련된 파일은 /etc/modules.conf (이는 레드햇 7.0 버전 이상의 기준으로 다른 배포판이나 버전에서는 /etc/conf.modules 파일일 수 있다) 이다.
사용법은 modprobe 명령과 관련하여 같이 설명되어 있다.

[관련 명령어]
insmod 모듈 적재 명령어
modprobe insmod보다 뛰어난 모듈 적재 명령어
2005/06/21 20:33 2005/06/21 20:33
현재 마운트되어 있는 파일 시스템의 사용 정보를 보여주는 명령어

사용법 : df [옵션][파일명...] 
-a, --all : 0블록의 파일 시스템을 포함을 포함하여, 모든 파일 시스템을 보여준다. 
-i, --inodes : inode의 남은 공간, 사용공간, 사용 퍼센트 정보를 보여준다. 
-k, --kilobytes : 1KB 단위로 보여준다. 
-P, --portability : POSIX에서 사용되는 형태로 보여준다. 
-T, --print-type : 각 파일시스템의 형태를 추가하여 각 파티션의 정보를 보여준다. 
-t 파일시스템 : 지정한 파일시스템 형태만의 정보를 보여준다. 
-x 파일시스템 : 지정한 파일시스템 형태만 빼고 나머지 모든 파일 시스템 정보를 보여준다. 
--help : 도움말을 보여준다. 
--version : 버전 정보를 보여준다. 

df 명령어는 현재 마운트되어 있는 파일 시스템의 사용 정보를 보여주는 명령어로 1024 바이트의 블록 단위로 보여준다.

[관련 명령어]
du 디스크 사용 현황을 볼 수 있는 명령어
free 현재의 메모리 사용 상태를 볼 수 있는 명령어
2005/06/21 20:32 2005/06/21 20:32
비교되는 두 파일에서 다른 부분을 실제 두 파일의 내용과 함께 보여 주는 명령어

사용법 : diff [옵션] 기준파일 비교파일 
       -lines 문맥의   라인을   보여준다.  이  옵션은  자신에의해 
              출려형으로 지정되지 않] 는다; -c나 -u없이는  아무런 
              효과가  없다.  이옵션은 정확하다. 적절하게 사용하면 
              패치는 적어도 내용의 두행정도는 필요하다. 
       -a     텍스트같아 보이지 않아도 텍스트로  된  모든  파일을 
              다루고 행간 비교를 한다. 
       -b     빈공간  총량의 변화를 무시한다. 
       -B     빈행에 삽입하거나 삭제와 같은 변화를 무시한다. 
       --brief 
              대충의 파일 다른점을 보고한다. 
       -c     내용 출력폼을 사용한다. 
       -C lines 
       --context[=lines] 
              는 context로 출력한다.  Use the context output for- 
              mat, showing lines (an integer) lines  of  context, 
              or  three if lines is not given.  For proper opera- 
              tion, patch typically needs at least two  lines  of 
              context. 
       --changed-group-format=format 
              if-then-else   포맷의  두  파일로  부터  다른  행을 
              포함하는 행그룹을 출력하는 포맷을 사용한다. 
       -d     아주 조그마한 변화라도  찾도록  알고리즘을  바꾼다. 
              이 옵션은 diff의 수행 속도를 아주 느리게 한다. 
       -D name 
       -e 
       --ed   유효한 ed 스크립트 출력을 한다. 
       --exclude=pattern 
              디렉토리를  비교할때,  파일과  서브디렉토리의 base- 
              name이 pattern과 일치 하면 무시한다. 
       --exclude-from=file 
              디렉토리를 비교할때,  파일과  서브디렉토리의  base- 
              name이  file에  있는  어떠한  pattern 과도 일치하면 
              무시한다. 
       --expand-tabs 
              출력파일에서 탭의 정렬을 위해 탭공간을 넓게 한다. 
       -f     ed  스크립트와  같이  모호하게  보여출력을  하지만, 
              파일에 나타난 순서대로 정돈된다. 
       -F regexp 
              각각의  차이점들을  위해  context와 특정한 포맷에서 
              regexp와 일치하는 앞의 행을 몇개 보여준다. 
       --forward-ed 
              ed  스크립트와  같이  모호하게  보여출력을  하지만, 
              파일에 나타난 순서대로 정돈된다. 
       -h     현재   이   옵션은  쓰이지  않는다;  단지  유닉스에 
              호환하기 위함이다. 
       -H     큰 파일을 빠르게 처리하기 다루기 위해 사용된다. 
       --horizon-lines=lines 
              Do not discard the last lines lines of  the  common 
              prefix and the first lines lines of the common suf- 
              fix. 
       -i     Ignore changes in case; consider upper- and  lower- 
              case letters equivalent. 
       -I regexp 
              regexp와   일치하는   삽입   혹은  삭제행의  변화를 
              무시한다. 
       --ifdef=name 
              프리프로세서의 상태에 따라 if-then-else포맷  출력을 
              합친다. 
       --ignore-all-space 
              행을 비교할때 공백을 무시한다. 
       --ignore-blank-lines 
              공백에 삽입또는 삭제의 변화를 무시한다. 
       --ignore-matching-lines=regexp 
              regexp와 일치하는 삽입,삭제행을 무시한다. 
       --ignore-space-change 
              공백의 양의 변화를 무시한다. 
       --initial-tab 
              Output a tab rather than a space before the text of 
              a line in normal or context  format.   This  causes 
              the alignment of tabs in the line to look normal. 
       -l     pr을 통해 페이지출력을 한다. 
       -L label 
       --label=label 
              context포맷과   특정(unified)포맷  헤더대신  라벨을 
              사용한다. 
       --left-column 
              양쪽 행중 왼쪽열만을 출력한다. 
       --line-format=format 
              in-then-else포맷의 모든 입력행 출력을 포맷한다. 
       --minimal 
              약간의 설정변화가 있으면 알고리즘을 바꾼다.  이것은 
              diff의 처리속도를 늦춘다.(종종 아주 느려진다.) 
       -n     RCS-포맷의 차이점을 출력한다; 
       -N 
       --new-file 
              비교하는   디렉토리에  파일이  하나의  디렉토리에만 
              있다면, 모두 있는 것처럼 처리를 하지만 사실은  다른 
              한 디렉토리에는 파일이 없다. 
       -P     디렉토리를   비교할때,   두개의  디렉토리중  두번째 
              디렉토리에만 파일이 존재한다면, 첫번째 디렉토리에는 
              사실 파일이 없지만 있는 것처럼 처리한다. 
       --paginate 
              페이지단위로 출력한다. 
       -q     두 파일의 다른점만 출력한다. 
       -r     두   디렉토리를   비교할때,   모든   서브디렉토리는 
              재귀적으로(recursively) 비교한다. 
       --rcs  RCS-포맷 diff들을 출력한다. 
       --recursive 
              두   디렉토리를   비교할때,   모든   서브디렉토리는 
              재귀적으로(recursively) 비교한다. 
       --report-identical-files 
       -s     두 파일이 같을 때 보고(report)한다. 
       -S file 
              When  comparing  directories,  start  with the file 
              file.  This is used for resuming an aborted compar- 
              ison. 
       --sdiff-merge-assist 
              sdiff의  정보를  출력한다.  sdiff 는 sdiff가 diff를 
              실행할때  이  옵션을  사용한다.   이  옵션은   직접 
              사용하고 싶은 사용자를 위해 쓰인다. 
       --show-function-line=regexp 
              각각의  차이점들을  위해  context와 특정한 포맷에서 
              regexp와 일치하는 앞의 행을 몇개 보여준다. 
       --side-by-side 
              두개의 비교대상을 나란히 출력한다. 
       --starting-file=file 
              디렉토리를 비교할때, file  부터  시작한다.   이것은 
              abort된 비교를 다시 시작하기 위해 사용된다. 
       --suppress-common-lines 
              두개의 포맷에서 공통된 행은 출력하지 않는다. 
       -t     입력  파일에서  탭의 정렬을 지키해 위해 출력시 탭의 
              공간을 확장한다. 
       -T      Output a tab rather than a space before  the  text 
              of a line in normal or context format.  This causes 
              the alignment of tabs in the line to look normal. 
       --text 모든  파일을  텍스트로써  다루고,   행대행(line-by- 
              line)을 비교한다. 
       -u     통일된 출력포맷을 사용한다. 
       --unidirectional-new-file 
              디렉토리를   비교할때,   두개의   디렉토리중 
              두번째   디렉토리에만   파일이   존재한다면, 
              첫번째  디렉토리에는 사실 파일이 없지만 있는 
              것처럼 처리한다. 
       -U lines 
       --unified[=lines] 
              Use the unified output format, showing lines 
              (an  integer)  lines of context, or three if 
              lines is not given.  For  proper  operation, 
              patch  typically needs at least two lines of 
              context. 
       -v 
       --version 
              diff 의 버전을 출력한다. 
       -w     두 행의 비교시 공백을 무시한다. 
       -W columns 
       --width=columns 
              Use an output width of columns  in  side  by 
              side format. 
       -x pattern 
              디렉토리들의  비교시,  pattern  과  일치하는 
              파일과 서브디렉토리를 무시한다. 
       -X file 
              디렉토리 비교시, file 에 포함된 모든  형태와 
              일치하는 파일과 서브디렉토리를 무시한다. 
       -y     Use the side by side output format. 
2005/06/21 20:30 2005/06/21 20:30
전체 경로에서 파일 이름을 제외한 디렉토리의 이름을 보여주는 명령어

사용법 : dirname 파일명 
--help : 도움말을 보여준다 
--version : 버전정보를 보여준다 

dirname은 지정한 파일이나 디렉토리의 디렉토리 구조의 마지막 레벨을 제외한 디렉토리의 패스를 보여준다. 만일 전체 절대 경로를 지정하지 않으면 현재 디렉토리인 . 을 보여주게 된다.

# dirname Work/ 
. 
# dirname /root/Work/ 
/root 
 
2005/06/21 20:30 2005/06/21 20:30
커널 순환 버퍼를 보고 제어하는 명령어이다.

사용법 : dmesg [옵션] 
c : 메시지 내용을 보여주고 순환 버퍼를 모두 비운다. 
-n level : 지정한 level의 값만 버퍼의 내용을 보여준다. 

dmesg는 시스템을 부팅할 때 로드되는 시스템 정보들의 각종 메세지를 가지고 있으며, 이를 다시 볼 때 이용한다. 이 정보에는 리눅스 커널 버전과 gcc버전 CPU정보등 부팅시의 시스템 정보를 다시 살펴 볼 수 있다.

# dmesg |more 
Linux version 2.4.18 (root@web2) (gcc version 2.95.3 20010315 (release)) #1 2002 
. 09. 09. (월) 20:16:41 KST 
BIOS-provided physical RAM map: 
 BIOS-e820: 0000000000000000 - 000000000009f400 (usable) 
 BIOS-e820: 000000000009f400 - 00000000000a0000 (reserved) 
 BIOS-e820: 00000000000e4400 - 0000000000100000 (reserved) 
 BIOS-e820: 0000000000100000 - 000000003fff0000 (usable) 
 BIOS-e820: 000000003fff0000 - 000000003ffffc00 (ACPI data) 
 BIOS-e820: 000000003ffffc00 - 0000000040000000 (ACPI NVS) 
 BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved) 
 BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) 
 BIOS-e820: 00000000fff00000 - 0000000100000000 (reserved) 
Warning only 896MB will be used. 
Use a HIGHMEM enabled kernel. 
On node 0 totalpages: 229376 
zone(0): 4096 pages. 
zone(1): 225280 pages. 
zone(2): 0 pages. 
Kernel command line: auto BOOT_IMAGE=linux ro root=802 BOOT_FILE=/boot/vmlinuz-2 
.4.18 mem=1024M 
Initializing CPU#0 
Detected 999.783 MHz processor. 
Console: colour VGA+ 80x25 
Calibrating delay loop... 1992.29 BogoMIPS 
Memory: 900508k/917504k available (1238k kernel code, 16608k reserved, 408k data 
, 220k init, 0k highmem) 
Dentry-cache hash table entries: 131072 (order: 8, 1048576 bytes) 
Inode-cache hash table entries: 65536 (order: 7, 524288 bytes) 
Mount-cache hash table entries: 16384 (order: 5, 131072 bytes) 
Buffer-cache hash table entries: 65536 (order: 6, 262144 bytes) 
Page-cache hash table entries: 262144 (order: 8, 1048576 bytes) 
CPU: Before vendor init, caps: 0387fbff 00000000 00000000, vendor = 0 
CPU: L1 I cache: 16K, L1 D cache: 16K 
CPU: L2 cache: 256K 
CPU: After vendor init, caps: 0387fbff 00000000 00000000 00000000 
CPU serial number disabled. 
Intel machine check architecture supported. 
Intel machine check reporting enabled on CPU#0. 
CPU:     After generic, caps: 0383fbff 00000000 00000000 00000000 
CPU:             Common caps: 0383fbff 00000000 00000000 00000000 
CPU: Intel Pentium III (Coppermine) stepping 0a 
Enabling fast FPU save and restore... done. 
Enabling unmasked SIMD FPU exception support... done. 
Checking 'hlt' instruction... OK. 
POSIX conformance testing by UNIFIX 
mtrr: v1.40 (20010327) Richard Gooch (rgooch@atnf.csiro.au) 
mtrr: detected mtrr type: Intel 
PCI: PCI BIOS revision 2.10 entry at 0xfdb57, last bus=1 
PCI: Using configuration type 1 
PCI: Probing PCI hardware 
PCI: Discovered peer bus 01 
Linux NET4.0 for Linux 2.4 
Based upon Swansea University Computer Society NET3.039 
Initializing RT netlink socket 

위에서 살펴 본 정보에서 이 시스템은 리눅스 커널 2.4.18을 사용하고, gcc 2.95.3, 메모리는 1024Mb 정도이며, CPU는 인텔 펜티엄III(Coppermine), ISA슬롯에 관련된 카드는 발견되지 않는 것을 볼 수 있다.
2005/06/21 20:29 2005/06/21 20:29
시스템의 DNS 서버 이름과 정보를 볼 수 있는 명령어이다.

사용법 : dnsdomainname [-v] 

dnsdomainname 명령어는 TCP/IP 명령어로, 시스템의 DNS 서버에 대한 정보를 보여준다.
이 시스템의 DNS 서버를 알아보자.

# dnsdomainname 
linuxroot.co.kr 

-v 옵션은 좀 더 상세한 정보를 보여준다.

# dnsdomainname -v 
gethostname()=ns.linuxroot.co.kr' 
Resolving ns.linuxroot.co.kr' ... 
Result: h_name=ns.linuxroot.co.kr' 
Result: h_addr_list=61.40.233.122' 
linuxroot.co.kr 

[관련 명령어]
hostname 시스템의 호스트 네임을 설정하거나 보여주는 명령어
domainname 시스템의 NIS/YP 도메인 네임을 설정하거나 보여주는 명령어
nisdomainname 시스템의 NIS/YP 도메인 네임을 설정하거나 보여주는 명령어
ypdomainname 시스템의 NIS/YP 도메인 네임을 설정하거나 보여주는 명령어
2005/06/21 20:28 2005/06/21 20:28
시스템의 DNS는 물론 NIS/YP 도메인 네임을 설정하거나 보여주는 명령어이다.

사용법 : domainname [옵션] [이름] 
-s, --short : 간략한 호스트 네임을 보여준다. 
-a, --alias : 앨리어스 네임을 보여준다. 
-i, --ip-address : 호스트 네임의 IP 주소를 보여준다. 
-f, --fqdn, --long : 풀 호스트 네임을 보여준다. 
-d, --domain : DNS 도메인 네임을 보여준다. 
-y, --yp, --nis : NIS/YP 도메인네임을 보여준다. 
-F, --file : file로 지정된 파일에서 읽어 호스트 네임이나 NIS 도메인 네임을 보여준다. 

domainname 명령어는 NIS/YP 명령어로 현재의 NIS 도메인이나 설정된 내용을 보여주는 명령어이다. 도메인 네임을 변경해 본다.

# domainname 
linuxroot.co.kr 
# domainname -s 
ns 
# domainname -i 
61.40.233.122 
# domainname -f 
ns.linuxroot.co.kr 

# domainname test.co.kr 
# domainname 
test.co.kr 

[관련 명령어]
hostname 시스템의 호스트 네임을 설정하거나 보여주는 명령어
dnsdomainname 시스템의 DNS 서버이름과 정보를 보여주는 명령어
nisdomainname 시스템의 NIS/YP 도메인 네임을 설정하거나 보여주는 명령어
ypdomainname 시스템의 NIS/YP 도메인 네임을 설정하거나 보여주는 명령어
2005/06/21 20:28 2005/06/21 20:28
MS-DOS 파일시스템을 체크하고 복구하는 명령어이다.

사용법 : dosfsck [옵션...] 장치명 
-a : 파일시스템을 자동적으로 복구한다. 
-d file : 파일 할당 테이블에서 지정한 파일을 버린다. 
-f : 손실된 체인을 파일로 복구한다. 
-l : 패스 이름을 보여 준다. 
-r : 파일시스템 복구 시 일일이 물어본다. 
-t : 테스트로 진행한다. 
-u file : 지정한 파일을 삭제하지 않는다. 
-v : 좀더 상세하게 보여준다. 
-V : 확인 절차를 생략한다. 
-w : 변경된 내용을 즉시 디스크에 쓴다. 
-y : -a 옵션과 동일하다.

dosfsck 명령어는 시스템 관리 명령어로 fsck과 유사하다. 하지만 이는 MS-DOS의 파일 시스템에만 적용할 수 있다. 리눅스는 MS-DOS, Sun등의 다양한 환경에서의 파일 시스템을 읽고 쓰거나, 간혹 읽을 수 있도록 지원한다. 이것은 후발 운영체제로서 다양한 운영체제에서 사용하는 파일 시스템을 지원하여 사용자들의 불편을 최소화하자는 뜻이다. 그러나 파일 시스템을 검사하고 복구하는 것은 각 고유의 파일 시스템별로 특징이 있기 때문에 서로 다른 명령이 필요하다. 리눅스에서는 많이 사용하는 타 운영체제의 파일 시스템을 검사하고 복구하는 명령도 발견할 수 있는데, 그 중 대표적인 것이 이 fat 파일 시스템에 대한 것과, minix파일 시스템에 대한 것이다.
2005/06/21 20:27 2005/06/21 20:27
디스크 사용 현황을 보여주는 명령어

사용법 : du [옵션] 
a, -all : 현재 디렉토리 아래의 모든 파일과 디렉토리의 사용 정보를 보여준다. 
-B, --block-size=size : 지정한 size를 블록 사이즈로 사용한다. 
-b, --bytes : 바이트 크기로 보여준다. 
-c, --total : 모든 파일의 디스크 사용 정보를 보여주고 나서 합계를 보여준다. 
 이것은 그 해당 경로가 얼마만큼 디스크 공간을 사용하고 있는지를 아는데 사용된다. 
-D, --deregerence-args : 계산되는 파일이나, 경로가 심볼릭 링크 파일이면, 그 원본의 값을 보여준다. 
-h, --human-readable : 보여지는 파일 용량을 사람이 읽기 쉬운 형태로 보여준다. 
-H, --si : -h와 비슷하나, 1024단위의 비율로 보여준다. 
-k : 보여지는 단위를 1 킬로바이트 형태로 보여준다. 
-l, --count-links : 만약 계산되는 파일 중에 하드 링크되어 있는 파일이 있다면, 그것을 그대로 계산한다. 
-L, --dereference : 모든 심볼릭 링크를 따른다. 
-S, --separate-dirs : 디렉토리의 총 사용량을 보여줄 때, 하위 디렉토리의 사용량을 제외한다. 
-s, --summarize : 간단하게 총 사용량만 보여준다. 
-x, --one-file-system : 현재 파일시스템의 파일 사용량만을 보여준다. 
-X file, --exclude-from=file : 지정한 파일과 일치하는 것은 제외한다. 
--help : 도움말을 보여준다. 
--version : 버전 정보를 보여준다. 

현재 디렉토리에서 du 명령은 사용량을 보여준다. 기본 단위는 메가 바이트 형태이다.
현재경로의 모든 디렉토리의 크기를 나타내지만, -a옵션으로 모든 파일을 보여주거나, 지정한 파일이나 디렉토리를 요약하여 나타낼 수도 있다.
-s 옵션은 지정한 파일이나 디렉토리의 총 사용량만을 보여준다.

# du -s /home/$ 
1666108 /home/admin 
4   /home/ftp 
16   /home/lost+found 
3200   /home/oracle 
128   /home/test 

du 명령의 -c옵션은 현재 디렉토리의 총 사용량을 보여주며, h는 알아 보기 쉽게 적당한 단위별로 보여준다.

# du -ch 
236k    ./public_html/board/admin 
4.0k    ./public_html/board/data/sokang_banner/1057347423 
8.0k    ./public_html/board/data/sokang_banner 
112k    ./public_html/board/data/__zbSessionTMP 
4.0k    ./public_html/board/data/StartPage_Notice 
16k     ./public_html/board/data/StartPage_BBS/1078273157 
1.5M    ./public_html/board/data/StartPage_BBS 
2.1M    ./public_html/board/data/StartPage_Pds/1075322656 
84k     ./public_html/board/data/StartPage_Pds/1075322657 
84k     ./public_html/board/data/StartPage_Pds/1075322355 
7.9M    ./public_html/board/data/StartPage_Pds/1078782774 
18M     ./public_html/board/data/StartPage_Pds 
------------------중략-------------------- 
8.0k    ./src/banktown/src/CVS 
12k     ./src/banktown/src 
16k     ./src/banktown 
2.8M    ./src 
34M     ./pp 
1.6M    ./mail 
8.0k    ./tmp/libformat/tests 
124k    ./tmp/libformat 
1.6M    ./tmp 
464M    . 
464M    합계 
2005/06/21 20:26 2005/06/21 20:26
ext2 파일 시스템 정보를 보여주는 명령어이다.

사용법 : dumpe2fs 장치명 

dumpe2fs 명령어는 장치명 이름에 존재하는 파일시스템의 수퍼 블록과 블록 그룹 정보를 보여준다.

# dumpe2fs sda5 
dumpe2fs 1.27 (8-Mar-2002) 
dumpe2fs: No such file or directory while trying to open sda5 
Couldn't find valid filesystem superblock. 
[root@web2 root]# dumpe2fs /dev/s 
Display all 2263 possibilities? (y or n) 
[root@web2 root]# dumpe2fs /dev/sda 
Display all 432 possibilities? (y or n) 
[root@web2 root]# dumpe2fs /dev/sda5 
dumpe2fs 1.27 (8-Mar-2002) 
Filesystem volume name:   /www 
Last mounted on:          <not available> 
Filesystem UUID:          a51029dc-c411-11d6-9153-8517cb048f00 
Filesystem magic number:  0xEF53 
Filesystem revision #:    1 (dynamic) 
Filesystem features:      has_journal filetype needs_recovery sparse_super 
Filesystem state:         clean 
Errors behavior:          Continue 
Filesystem OS type:       Linux 
Inode count:              1523712 
Block count:              3044309 
Reserved block count:     152215 
Free blocks:              2639536 
Free inodes:              1520445 
First block:              0 
Block size:               4096 
Fragment size:            4096 
Blocks per group:         32768 
Fragments per group:      32768 
Inodes per group:         16384 
Inode blocks per group:   512 
Last mount time:          Wed Feb 18 18:31:02 2004 
Last write time:          Wed Feb 18 18:31:02 2004 
Mount count:              12 
Maximum mount count:      -1 
Last checked:             Tue Sep 10 01:31:51 2002 
Check interval:           0 (<none>) 
Reserved blocks uid:      0 (user root) 
Reserved blocks gid:      0 (group root) 
First inode:              11 
Inode size:               128 
----------------------하략---------------------- 
2005/06/21 20:25 2005/06/21 20:25
키보드의 입력을 키 값으로 변역하는 테이블의 정보를 보여 주는 명령어

사용법 : dumpkeys [옵션] 
-i, --shot-info : 키보드 드라이버에 관한 정보를 보여준다. 
-I, --long-info : -i 옵션에 추가적으로 커널에서 지원가능한 키의 수와 상세 정보를 보여준다. 
-n, --numeric : 16진수 표시법으로 활성화된 코드 값을 보여준다. 
-f, --full-table : 간략한 형식이 아닌 풀 테이블을 보여준다. 
-l, --separate-lines : 각 modifier/keycode를 한 줄에 하나 씩 보여주며, plain을 변경되지 않는 keycode의 접두사로 한다. 
-S, --shape=num : 테이블 형태를 결정하는 num 값을 이용하여 정보를 보여준다. 각 num 값은 다음과 같다. 

-----------------------------------------------
0 기본값
1 --full-table과 같다.
2 --separate-lines와 같다.
3 keycode를 첫 번째 줄에 두고, modifier/keycode 부분을 한 줄씩 보여준다.
-----------------------------------------------
-c, --charset= : 지정한 캐릭터 셋을 활성화 코드로 해석한다.
다음은 사용할 수 있는 캐릭터 셋이다.

iso-8859-1 iso-8859-2 iso-8859-3 iso-8559-4 iso-8559-5
iso-8859-7 iso-8859-8 iso-8859-9 iso-8559-14 iso-8559-15
mazovia koi8-r koi8-u iso-10646-18

-h, --help : 도움말을 보여준다.
-V, --version : 버전 정보를 보여준다.

dumpkeys 명령어는 그렇게 많이 사용하지 않는 명령어이지만, 키보드의 코드 값과 정보를 살펴보는데 유용하다.

# dumpkeys | more 
keymaps 0-2,4-6,8-9,12 
keycode   1 = Escape          
        alt     keycode   1 = Meta_Escape      
        shift   alt     keycode   1 = Meta_Escape      
        control alt     keycode   1 = Meta_Escape      
keycode   2 = one              exclam          
        alt     keycode   2 = Meta_one        
        shift   alt     keycode   2 = Meta_exclam      
keycode   3 = two              at               at               nul            
  nul              
        alt     keycode   3 = Meta_two        
        shift   alt     keycode   3 = Meta_at          
        control alt     keycode   3 = Meta_nul        
keycode   4 = three            numbersign      
        control keycode   4 = Escape          
        alt     keycode   4 = Meta_three      
        shift   alt     keycode   4 = Meta_numbersign 
keycode   5 = four             dollar           dollar           Control_backsla 
sh 
        alt     keycode   5 = Meta_four        
        shift   alt     keycode   5 = Meta_dollar      
        control alt     keycode   5 = Meta_Control_backslash 
--More-- 
2005/06/21 20:24 2005/06/21 20:24
ext2파일 시스템 점검하는 명령어

사용법 : e2fsck [옵션] 장치이름, fsck.ext2 [옵션] 장치이름 
-b superblock : 기본 수퍼 블록을 사용하지 않고, 지정한 수퍼 블록을 불러온다. 
-B blocksize : 수퍼 블록을 찾기 위해, 지정한 블록 사이즈를 사용한다. 
-c : 배드 블록을 체크한다. 
-f : 파일시스템에 이상 유무에 상관없이 파일시스템을 체크한다. 
-l bad_blocks_file : 지정한 배드 블록 파일을 배드 블록 목록에 추가한다. 
-L bad_block_file : 지정한 배드 블록 파일을 배드 블록 목록으로 설정한다. 
-n : 파일시스템을 읽기전용으로 열고, 질문에 대해 no로 한다. 
-p : 사용자 의견을 묻지 않고, 자동으로 파일 시스템을 체크한다. 
-n : 파일시스템을 읽기 전용으로 열고, 질문에 대해 no로 한다. 
-v : 상세한 정보를 보여준다. 
-y : 파일시스템을 읽기 전용으로 열고, 질문에 대해 yes로 한다.

e2fsck 명령어는 fsck 명령어에 -t ext2 옵션을 붙인 것과 같은 명령어 이다. fsck 명령이나 e2fsck 명령어는 파일 시스템을 직접 파일 시스템을 체크하는 명령이기 때문에 시스템에 연결되어 있는 상태보다는 마운트를 해제한 상태에서 파일시스템을 체크하기를 권장한다.
물론 일부러 파일 시스템을 체크하는 일도 있을 것이다. 그러나 갑작스런 일로 인해 시스템에 이상이 생기는 경우, 부팅할 때 대부분의 시스템에서는 e2fsck가 자동으로 파일 시스템을 체크할 것이다. 하지만, 문제가 심각한 경우는 파일 시스템을 수리하던 중 다음과 같은 메시지를 보여 주며 중단하는 경우도 있다.

*** An error occurred during the  file system check. 
*** Dropping you to a shell; the system will reboot 
*** when you leave the shell. 
Give root password for maintence 
(or type Control-D for normal startup): => root 패스워드 입력 
(Repair filesystem) # 

위의 메시지와 같이 루트 패스워드를 입력하면, 프롬프트를 볼 수 있다. 만일 그대로 다시 부팅하려면 Control-D 키를 입력한다. 이런 경우 대부분은 루트 패스워드를 입력하여 프롬프트를 뛰운 뒤 파일 시스템을 체크하여 해결할 것이다.
프롬프트에서 파일시스템을 체크하면 된다.

(Repair filesystem) # fsck /dev/hda1 

여기서 /dev/hda1는 리눅스가 설치되어 있는 파티션을 뜻한다. 각자의 환경에 따라 달라질 수 있다. 만일 마운트 된 /dev/hdc1 파일시스템을 확인한다면, 먼저 /hdc1의 마운트를 해제한 다음 실행하자.

# umount /hdc1 
# e2fsck /dev/hdc1 
2efsck 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09 
/hdc was not cleanly unmounted, check forced. 
Pass 1: Checking inodes, blocks, and sizes 
Pass 2: Checking directory structure 
Pass 3: Checking directory connectivity 
Pass 4: Checking reference counts 
Pass 5: Checking group summary information 
/hdc: 5766/794976 files (1.9% non-contiguous), 1293868/1586962 blocks 

[관련 명령어]
fsck 파일시스템을 점검하는 명령어
2005/06/21 20:23 2005/06/21 20:23
시스템의 환경변수 또는 입력 내용을 화면에 출력한다.

사용법 : echo [-ne] [문자열], echo {--help,--version} 
-n : 마지막에 개행 (newline : 화면상에서 커서를 한 줄 아래로 내리도록 하는 코드로서, 아스키 문자 셋에서 10진수로 "10"에 해당하는 값을 갖는다) 문자를 출력하지 않는다. 
-e : 문자열에서 백슬래쉬(\)와 조합되는 이스케이프 문자(escape sequence : 프린터나 모니터의 화면 속성 등을 제어하기 위해 장치에 보내는 특수 문자열을 의마하는데, 그 중에서도 특히 이스케이프 문자로 시작되는 기계 명령을 말한다)을 인용부호(")로 묶어 문자를 인식하도록 한다. 아래는 사용 가능한 것들이다. 
-------------------------------------------------------- 
\a 경고음 (벨) 
\b 백스페이스 
\c 마지막 개행 문자를 사용하지 않는다. 
\f 폼 피드(form feed : 프린터에서 용지 바꿈) 
\n 개행 문자 
\r 캐리지 리턴 (carriage return : 커서를 그 줄의 맨 앞으로 옮기는데 사용되는 특수한 코드이다. 아스키 문자 셋에서, CR은 십진수 "13"에 해당되는 값이다.) 
\t 수평 탭 
\v 수직 탭 
\\ 백슬래쉬 
\nnn ASCII 코드가 nnn (8진수)인 문자 
--------------------------------------------------------- 
--help : 표준출력으로 사용법을 출력하고 정장적으로 종료한다. 
--version :  표준출력으로 버전정보를 출력하고 정장적으로 종료한다. 

echo 명령어는 뒤에 적는 문자열을 출력하는 명령어로, 문자열을 출력한 후에는 개행 문자를 덧붙어 출력한다. 또한 셸에서 자체적으로 포함하고 있는 내부 환경변수를 볼 때 주로 사용하게 된다.
먼저, 내부에서 사용하는 환경 변수를 살펴보자.

# set | more 
BASH=/bin/bash 
BASH_ENV=/root/.bashrc 
BASH_VERSINFO=([0]="2" [1]="05a" [2]="0" [3]="1" [4]="release" [5]="i686-pc-linu 
x-gnu") 
BASH_VERSION='2.05a.0(1)-release' 
COLORS=/etc/DIR_COLORS 
COLUMNS=80 
DIRSTACK=() 
EUID=0 
GROUPS=() 
HISTFILE=/root/.bash_history 
HISTFILESIZE=1000 
HISTSIZE=1000 
HOME=/root 
HOSTNAME=web2 
HOSTTYPE=i686 
IFS=$' \t\n' 
INPUTRC=/etc/inputrc 
JLESSCHARSET=ko 
LANG=ko_KR.eucKR 
LESSOPEN='|/usr/bin/lesspipe.sh %s' 
LINES=24 
LOGNAME=root 

echo 명령어로 HOME 환경 변수를 출력해 보자. 환경변수를 출력하려면 $문자를 붙여야한다.

# echo $HOME 
/root 

환경 변수를 보지않고, 자체 문자열을 출력하려면 다음과 같다.

# echo HOME 
HOME 

echo 명령어에서 보여지는 개행 문자를 삭제해 보자.

# echo -n HOME 
HOME# 

echo -e 옵션을 사용하여 이스케이프 문자를 인식할 수도 있다. 이 때에는 시스템에서 경고음을 들을수 있을 것이다.

# echo -e "\a" 

각각의 \t \n \r를 사용할 수도 있다.

# echo -e "test\ttest\ntest\rtest" 
test        test 
test 
# echo "test\ttest\ntest\rtest" 
test\ttest\ntest\rtest 
2005/06/21 20:22 2005/06/21 20:22