사용할 수 있는 커널 모듈을 적재(load)하여 동작하게 하는 명령어

사용법 : insmod [옵션] 모듈파일 [symbol=value] 
-f : 커널버전이 다르더라도 강제로 모듈을 로드한다. 
-h : 사용법을 보여준다. 
-k : 모듈을 자동으로 삭제가 가능하도록 한다. 
-L : 동일한 모듈을 동시에 로드되지 못하게 한다. 
-m : 로드맵을 생성한다. 
-n : 모듈을 로드하지 않고, 보여주기만 한다. 
-p : 모듈이 커널과 매치가 되는지 확인한다. 
-s : 터미널 대신 syslog에 에러를 출력한다. 
-v : 에러를 상세히 보여준다. 
-V : 버전을 보여준다. 
-o NAME : 모듈을 지정한 NAME으로 설정한다. 
-p prefix : 커널이나 모듈을 prefix한다. 

insmod 명령은 커널의 모듈을 적재할 때 사용하는 명령어이다. insmod와 함께, 좀더 지능적인 modprobe 명령이 있다. 모듈을 적재할 수 있는 모듈 리스트는 레드햇 기준으로 모듈 디렉토리는 /lib/modules/커널버전/kernel/에 있다.
각 커널버전에 따라 /lib/modules 디렉토리 다음의 디렉토리는 커널 버전을 따른다. 각 하위 디렉토리에서 .o로 끝나는 모듈 파일을 살펴 볼 수 있을 것이다.

# cd /lib/modules/2.4.13-1hl/kernel/ 
# ls 
arch      drivers     fs    net 

lsmod 명령어로 현재 메모리에 적재된 모듈들을 살펴 볼 수 있다. ip_tables 모듈, 이더넷 카드 모듈, ext3모듈 등이 있다.

# lsmod 
Module                  Size  Used by    Not tainted 
loop                   12472   0 
iptable_filter          2444   0  (autoclean) (unused) 
ip_tables              15776   1  [iptable_filter] 
e100                   56100   1 
ext3                   71300   2 
jbd                    52084   2  [ext3] 
cpqarray               24324   3 
sd_mod                 13708   0  (unused) 
scsi_mod              108104   1  [sd_mod] 

위의 모듈 중, ip_tables모듈을 rmmod명령으로 메모리에서 제거해 보자. 제거된 ip_tables 모듈은 modprove 명령이나 insmod 명령으로 다시 적재할 수 있다.

# rmmod ip_tables 

# insmod ip_tables 
Using /lib/modules/2.4.13-1hl/kernel/net/ipv4/netfilter/ip_tables.o 

이렇게 insmod과 rmmod 그리고, lsmod 명령으로 자유롭게 모듈들을 관리할 수 있다.

[관련 명령어]
depmod 로드할 커널 모듈의 의존성을 다루는 명령어
modprobe 커널 모듈을 로드하는 명령어
2005/06/20 20:24 2005/06/20 20:24
지정한 속성대로 정해진 위치에 파일을 복사하는 명령어이다.

사용법 : install [옵션] [파일] 디렉토리 
-d --directory : 대상 디렉토리를 지정을 하는데, 만일 경로가 없다면 디렉토리를 만든다. 
-g group, --group group : 새로운 파일의 그룹으로 지정한 group ID나 group 이름으로 설정한다. 
-m mode, --mode mode : 새로운 파일의 모드를 지정한 mode 값으로 사용한다. 기본값은 0755이다. 
-o [owner], --owner [owner] : 지정한 owner로 소유자를 지정한다. 
 만일, 지정하지 않으면 roo로 실행 시 지정하는 소유자로 변경한다. 
-s, --strip : 심볼 테이블을 제거한다. 
--help : 도움말을 보여준다. 
--version : 버전 정보를 보여준다. 

install 명령은 파일의 권한 속성들, 소유주, 그룹을 지정해서 복사한다. cp 명령과 비슷하나, 필요하면 파일이 복사될 경로를 만들고, 다른 소유자나 그룹을 지정하는 등의 다양한 기능을 포함하고 있어 컴파일 된 프로그램을 정확한 위치에 설치하는 데 많이 사용된다. 때문에 Makefile에서 사용된다.
현재 디렉토리의 file_change_or_mv.sh 스크립트 실행 파일을 /bin 디렉토리 밑으로 인스톨 해 보자.

# install -o admin -g admin file_change_or_mv.sh /bin/ 

인스톨된 file_change_or_mv.sh 파일은 whereis 명령으로 위치를 찾을 수 있으며, -o 옵션으로 지정한 소유자와 -g 옵션으로 지정한 그룹으로 설치 된다.
2005/06/20 20:22 2005/06/20 20:22
리눅스 커널 2.2대에서 바화벽, 규칙 설정, IP 매스커레이딩을 조정하는 커널도구
2005/06/20 20:21 2005/06/20 20:21
커널 2.0대의 IP 방화벽, 통계 분석 관리도구
2005/06/20 20:21 2005/06/20 20:21
커널 2.4대에서 방화벽, 규칙 설정, IP 매스커레이딩을 조정하는 커널 도구

사용법 : 
iptables -[ADC] chain 상세룰 [옵션] 
iptables -[RI] chain 룰번호 상세룰 [옵션] 
iptables -D chain 룰번호 [옵션] 
iptables -[LFZ] [chain] [옵션] 
iptables -[NX] chain 
iptables -E 이전체인이름 새로운 체인 이름 
iptables -P chain target [옵션] 
iptables -h 

-A chain, --append chain : chain을 추가한다. 
-D chain, --delete chain : chain에서 룰을 삭제한다. 
-D chain 룰넘버, --delete chain 룰넘버 : chain 정책 중 지정한 룰넘버를 삭제한다. 만일 룰넘버가 1이라면 chain 규칙의 첫 번째  룰을 삭제한다. 
-l chain [룰넘버], --insert chain [룰넘버] : chain 정책에 지정한 숫자번째에 상빕하거나, 마지막에 룰을 삽입한다. 
-R chain 룰넘버, --replace : chain 정책 중 지정한 숫자번째의 룰을 교체한다. 
-L [chain], --list [chain] : 모든 chain 정책을 보거나, 지정한 chain 정책을 본다. 
-F [chain], --flush : 모든 chain 정책을 삭제하거나, 지정한 chain 정책을 삭제한다. 
-Z [chain], --zero : 모든 chain 정책을 제로로 만들거나, 지정한 chain 정책을 제로로 만든다. 
-C chain, --check chain : 설정한 chain 정책을 테스트한다. 
-N chain, --new-chain : 새로운 정책을 만든다. 
-X [chain], --delete-chain : 사용자가 만든 chain이나 모든 chain을 삭제한다. 
-P chain target, --policy chain target : chain 정책을 지정한 chain 정책으로 바꾼다. 
-E old-chain new-chain, --rename-chain old-chain new-chain : Chain명을 바꾼다. 
-p, --procotol [!] proto : 프로토콜을 지정한다. !은 제외의 의미이다. 
-s, --source [!] address[/mask] : 출발지 주소를 지정한다. mask는 C클래스면 255.255.255.0이나 24 비트로 표현된다. 
-d, --destination [!] address[/mask] : 목적지 주소를 지정한다. 
-i, --in-interface [!] input name[+] : 수신하는 네트워크 인터페이스 이름을 지정한다. name+은 name으로 시작하는 모든 인터페이스 이름이다. 
-j, --jump target : 지정하는 target으로 리다이렉트 시킨다. 
-m : 지정한 match로 확장이 가능하다. 
-n : IP주소와 포트번호를 숫자 그대로 보여준다. 
-o, --out-interface [!] output name[+] : 발신하는 네트워크 인터페이스 이름을 지정한다. 
-v, --verbose : 상세한 정보를 보여준다. 
--line-numbers : 룰정책을 보여줄 때 줄번호도 나타낸다. 
-x, --exact : 정확한 값으로 나타낸다. 
-V, --version : 버전 정보를 보여준다. 

iptables는 netfilter 필터링 룰에 사용한다. 대부분 ipchains와 사용법이 거의 같으나, 가장 큰 차이점은 확장성에 있다. 정상적으로 커널 확장은 커널 모듈 하부 디렉토리(/lib/modules/커널버전/kernel/net)에 존재하는데, iptables는 요구에 의하여 적재된다. 그래서 아들 모듈을 직접 적재할 필요는 없다. iptables의 확장들은 공유 라이브러리 형태로 보통 /usr/local/lib/iptables에 위치한다. 배포판은 이것을 /lib/iptables나 /usr/lib/iptables에 넣으려 할 것이다.
ipchain이 iptable에서 변경된 사항들은 다음과 같다.

*미리 만들어진 체인 이름(input, output. forward)가 소문자에서 대문자로 바뀌었다.
*-i 지시자는 들어오는 인터페이스만 의미하고 INPUT과 FORWARD chain에서만 작동한다. FORWARD나 OUTPUT chain은 -o로 사용한다.
*TCP와 UDP 포트는 --source-port, --sport (--destination-port, --dport)과 사용하게 된다. -p tcp 또는 -p udp 옵션과 함께 사용되어져야 한다.
*TCP -y 지시자는 --syn으로 바뀌었고 -p tcp다음에 와야한다.
*DENY target는 DROP으로 바뀌었다.

--iptable 자세한 사항은 보안 게시판에서 올리겠습니다--
2005/06/20 20:21 2005/06/20 20:21
주어진 텍스트 파일에서 철자가 잘못 입력된 부분을 표시한다.

사용법 : ispell [-옵션][파일] 
-b : 파일을 백업한다. (.bak) 
-d 사전파일 : 시스템 표준사전 외의 지정한 사전을 이용한다. 
-n : nroff/troff 파일을 검사한다. 
-x : 백업 하지 않는다. 
-h, --help : 도움말을 보여준다. 
-v : 버전을 보여준다. 

파일의 철자를 검사한다. 파일을 철자 검사하여 시스템의 사전에 수록된 내용과 틀릴 경우 수정할 수 있는 단어를 목록으로 만들어 하여 선택할 수 있게 만든다.

ispell 명령어
i) Ignore 변경안함
r) Replace 변경
a) Add 사전에 단어추가
I) Ignore all 모두 변경안함
R) Replace all 모두 변경
x) Exit ispell 종료
2005/06/20 20:19 2005/06/20 20:19
두 파일을 의미 있는 형태로 묶어 하나의 파일로 만든다.

사용법 : join [옵션]... 파일1 파일2 
-a 파일넘버 : 지정한 파일을 기준에 맞게 합친다. 
-e EMPTY : 빈 필드를 지정하여 공백을 나타낸다. 
-i, --ignore-case : 비교 대상 필드가 다를 경우 무시한다. 
-j FIELD : -1 FILED -2 FILED와 같다. 
-j1 FILED : -1 FILED와 같다. 
-j2 FILED : -2 FILED와 같다. 
-o FORMAT : 포맷 형식에 따라 합쳐진 결과를 보여준다. -0이면 의미하며, 1.2라면 첫번째 파일의 2번째 필드의 의미가 된다. 
-t CHAR : 지정한 CHAR를 구분자로 이용한다. 
-v 파일넘버 : 지정한 파일을 기준으로 비교하여 다른 필드내용을 보여준다. 
-1 FILED : 첫 번째 파일의 지정한 필드 번호를 기준으로 결합하여 보여준다. 
-2 FILED : 두 번째 파일의 지정한 필드 번호를 기준으로 결합하여 보여준다. 
--help : 도움말을 보여준다. 
--version : 버전 정보를 보여준다.

join은 두 파일을 의미있는 형태로 묶어 하나의 파일로 만드는 명령어로 공통으로 표시된 필드가 들어 있는 줄에 대응하여 합치게 된다.
한 예로 아래와 같이 jointest 파일과 jointest2 파일이 있따고 하자.

# cat jointest 
1   one 
2   two 
3   tree 
4   four 
5   five 

# cat jointest2 
1   1000 
2   2000 
4 
5   5000 

첫 번째와 두 번째 파일의 1 번째 필드를 기준으로 공통된 내용을 조인하여 보여준다.

# join jointest jointest2 
1 one 1000 
2 two 2000 
4 four 
5 five 5000 

필드 기준을 -j1이나 -j2 옵션으로 변경이 가능하다. -j2 1 옵션은 두 번째 파일의 1번째 필드를 기준으로 결합하는 옵션이다.

# join -j2 1 jointest jointest2 
1 one 1000 
2 two 2000 
4 four 
5 five 5000 

-v 옵션은 주어진 2개의 파일을 비교하여 지정된 필드에 공통되지 않는 내용을 보여준다.

# join -v 1 jointest jointest2 
3 three 
2005/06/19 21:29 2005/06/19 21:29
현재 키보드 모드를 확인하고 설정한다.

사용법 : kbd_mode [옵션] 
-s --scancode : scancode모드로 지정 (RAW) 
-k--keycode : keycode 모드로 지정 (MEDIUMRAM), 
-a--8bit : ASCII 모드로 지정 (XLATE), 
-u--unicode : UTF-8 모드로 지정 (UNICODE), 
--mode={8bit,keycode,unicode,scancode} : 모드를 지정한다. 
-h --help : 도움말을 보여준다. 
-V --version : 버전을 보여준다. 

현재 키보드의 모드를 확인하고 설정할 수 있다.

# kbd_mode 
The keyboard is in the default (ASCII) mode 

ASCII 모드로 설정되어 있음을 알 수 있다. 설정된 내용을 변경하기 위해서는 위 옵션을 참고로 입력하면 된다.
2005/06/19 21:27 2005/06/19 21:27
키보드의 입력 속도를 조절하여 타수가 빠른 사람의 오타를 줄이고 체감 속도를 높여준다.

사용법 : kbdrate [옵션] 
-V : 버전을 보여준다. 
-s : kbdrate를 아무것도 출력하지 않고 실행한다. 
-r rate : 키보드의 rate 값을 변경한다. rate는 1초동안 입력할 수 있는 글자 수를 말한다. (rate의 범위 : 2.0~30.0) 
-d delay : 키보드의 delay 값을 설정한다. delay시간은 하나의 키를 누르고 있을때 연속적인 입력을 위한 것인지를 구분한다. delay 시간은 1/1000초 단위를 사용한다. (delay 범위 : 250 ~1000ms) 

키보드 입력 속도를 설정한다. 컴퓨터를 자주 사용하는 빠른 타수의 사용자라면 키보드 속도에 민감하게 반응할 것이다. 일반 사용자는 차이를 느끼기 힘들 수도 있다.

# kbdrate 
Typematic Rate set to 10.9 cps (delay =250 ms) 

키보드가 1초에 입력할 수 있는 글자 수를 cps(Character Per Second)의 단위로 표시한다. 즉 초당 10.0개의 글자를 입력할 수 있다. delay는 사용자가 하나의 키를 누르고 있을때 이 입력이 연속된 글자의 입력을 위한 것인지를 판단하는 시간을 뜻한다.
여기서는 250ms이 지나면 연속된 입력을 위한 것으로 간주하고 현재 누르고 있는 키를 연속 입력 하게된다. rate 10.9 cps와 delay 250ms 은 IBM계열 컴퓨터에서 기본적으로 사용되는 표준이다.
2005/06/19 21:26 2005/06/19 21:26
프로세스를 종료하는 명령어

사용법 : kill [-s 시그널] [-a] pid ... kill -l [시그널] 
pid ... : 종료시킬 프로세스 ID나 프로세스 이름을 지정한다. 
-s : 특별히 보낼 시그널을 지정한다. 여기에는 시그널 이름이나 번호가 온다. 
-l : 시스널로 사용할 수 있는 시그널 이름들을 보여준다. 이것은 /usr/include/linux/signal.h 파일에서도 알 수 있다. 
-1, : -HUP 프로세스를 재 활성화한다. 
-9 : 프로세스를 강제로 종료시킨다. 

kill 명령은 지정한 프로세스에 지정한 시그널을 보낸다. 시스템에 문제가 생겨 해당 프로세스를 터미널에서 종료시킬 경우 유용하다. 만일 kill 명령으로 종료되지 않는 프로세스가 있다면, -9 옵션으로 프로세스를 강제 종료시킬수 있다.
먼저 ps 명령으로 sshd 프로세스를 확인한다. root 사용자로 PID 1765와 2287를 확인할수 있다.

# ps aux | grep sshd 
root       699  0.0  0.2  2628 1188 ?        S    Mar17   0:13 /usr/sbin/sshd 
root      3766  0.0  0.4  3884 2180 ?        S    03:32   0:00 /usr/sbin/sshd 

참고로, ps aux 명령시 나타나는 프로세스 정보의 각 필드의 내용은 다음과 같다. 좀더 많은 정보는 ps 명령어를 참고하자.
------------------------------------------------------
root USER 프로세스의 사용자
699 PID 프로세스 ID
0.0 %CPU 마지막 1분 동안 프로세스가 사용한 CPU 점유율
0.2 %MEM 마지막 1분 동안 프로세스가 사용한 메모리의 점유율
2628 VSZ 가장 메모리에 있는 프로세스가 사용한 메모리의 점유율
1188 RSS 프로세스의 실제 메모리의 크기로 킬로바이트 단위
? TTY 연결되어 있는 터미널
S STAT 실행되고 있는 프로세스 상태
10:13 START 프로세스가 시작된 날짜
sshd COMMAND 사용자가 실행한 명령 이름
-------------------------------------------------------
ps 명령으로 확인된 프로세스 정보는, kill PID 명령으로 해당 프로세스를 종료시킬 수 있다

# kill 699 

만일 kill 명령으로 종료되지 않는다면 -9 옵션으로 강제 종료시킨다.

# kill -9 699 

kill -HUP pid 명령으로 프로세스를 종료하였다가, 다시 되살릴 수 있다.

# kill -HUP 699 

[관련 명령어]
killall 프로세스 이름으로 프로세스를 종료하는 명령어
2005/06/19 21:24 2005/06/19 21:24
프로세스 번호가 아닌 이름으로 프로세스를 종료하는 명령어

사용법 : 
killall [-egiqvw] [-시그널] 이름 ... 
killall -l 
killall -V 
-e : 매우 긴 이름에 대해 정확한 짝을 요구한다. 만약 명령 이름이 15글자가 넘으면, 완전한 이름은 이용 불가능할 수도 있다. 
-g : 그룹을 지정하여 프로세스를 종료시킨다. 같은 프로세스 그룹에 속한 여러 개의 프로세스들이 발견되더라도 시그널은 그룹 당 한번만 보내진다. 
-i : 프로세스 종료 전 확인 메시지를 보인다. 
-l : 알려진 모든 시그널 이름 목록을 보여준다. 
-q : 어떤 메시지도 보이지 않는다. 
-v : 시그널이 제대로 보낸 경우, 상세한 정보를 보여준다. 
-V : 버전 정보를 출력한다. 
-w : 프로세스가 종료될 때까지 대기한다. 

killall 명령어는 kill명령어와 달리, 프로세스 이름을 사용하여 프로세스를 종료할 수 있다.
아래 httpd 데몬을 확인해보자.

# ps aux | grep httpd 
root     10605  0.0  1.4 79948 6636 ?        S    Mar31   0:00 /usr/sbin/httpd - 
apache    3142  0.0  2.2 82916 10300 ?       S    Apr05   0:08 /usr/sbin/httpd - 
apache    3143  0.0  2.1 82380 9712 ?        S    Apr05   0:07 /usr/sbin/httpd - 
apache    3144  0.0  2.3 82960 10348 ?       S    Apr05   0:06 /usr/sbin/httpd - 
apache    3145  0.0  2.2 82880 10272 ?       S    Apr05   0:07 /usr/sbin/httpd - 
apache    3149  0.0  2.1 82368 9772 ?        S    Apr05   0:08 /usr/sbin/httpd - 
apache    3158  0.0  2.2 82532 9916 ?        S    Apr05   0:11 /usr/sbin/httpd - 
apache    3181  0.0  2.1 82416 9772 ?        S    Apr05   0:07 /usr/sbin/httpd - 
apache    3186  0.0  2.2 82628 9996 ?        S    Apr05   0:08 /usr/sbin/httpd - 
apache    3187  0.0  2.1 82312 9672 ?        S    Apr05   0:07 /usr/sbin/httpd - 
apache    3193  0.0  1.8 80992 8280 ?        S    Apr05   0:05 /usr/sbin/httpd - 
apache    3194  0.0  2.2 82520 9892 ?        S    Apr05   0:08 /usr/sbin/httpd - 
apache    3195  0.0  2.1 82396 9772 ?        S    Apr05   0:07 /usr/sbin/httpd - 

killall 뒤에 프로세스 이름인 httpd를 입력하여 httpd 데몬을 종료할 수 있다.

# killall httpd 
# ps aux | grep httpd 
root    343     0.0    0.5    2496    688    pts/0     S   21:54  grep   httpd 

killall -e 옵션으로 프로세스 관련 그룹을 지정하여 프로세스를 종료할 수도 있다.

# killall -e apache 
# ps aux | grep httpd 
root    343     0.0    0.5    2496    688    pts/0     S   21:54  grep   httpd 

[관련 명령어]
killpg 프로세스 그룹에 시그널을 보내는 함수
kill 프로세스를 종료하는 명령어
killall5 자신의 세션을 제외한 모든 프로세스의 시그날을 보내 시행중인 모든 프로세스를 종료한다.
2005/06/19 21:22 2005/06/19 21:22
커널 심볼과 모듈에 대한 정보를 선별적으로 정리하여 보는 명령이다.

사용법 : ksyms [옵션] 
-a : 모든 심볼을 보여준다. 
-h : column header를 보여주지 않는다. 
-m : 모듈 정보를 보여준다. 

ksyms는 커널 심볼에 대한 정보를 보여준다. 커널 심볼은 /proc/ksms 파일을 보면 알 수 있지만 ksyms 명령어를 이용하여 원하는 내용을 선별적으로 볼 수 있다.
커널 심볼 중 모듈에 대한 정보를 보자.

# ksyms -m 
Address   Symbol                            Defined by 
dc985000  (3k)                              [iptable_mangle] 
dc985060  __insmod_iptable_mangle_S.text_L480  [iptable_mangle] 
dc985000  __insmod_iptable_mangle_O/lib/modules/2.4.20-28.7/kernel/net/ipv4/netfilter/iptable_mangle.o_M3FE1D813_V132116  [iptable_mangle] 
dc985720  __insmod_iptable_mangle_S.data_L1216  [iptable_mangle] 
dc998000  (3k)                              [iptable_filter] 
dc998680  __insmod_iptable_filter_S.data_L896  [iptable_filter] 
dc998000  __insmod_iptable_filter_O/lib/modules/2.4.20-28.7/kernel/net/ipv4/netfilter/iptable_filter.o_M3FE1D813_V132116  [iptable_filter] 
dc998060  __insmod_iptable_filter_S.text_L336  [iptable_filter] 
dc996000  (3k)                              [ipt_MASQUERADE] 
dc996000  __insmod_ipt_MASQUERADE_O/lib/modules/2.4.20-28.7/kernel/net/ipv4/netfilter/ipt_MASQUERADE.o_M3FE1D813_V132116  [ipt_MASQUERADE] 
dc9968e0  __insmod_ipt_MASQUERADE_S.data_L96  [ipt_MASQUERADE] 
-------------------이하 생략---------------------- 
2005/06/19 21:21 2005/06/19 21:21
사용자의 로그인 기록과 재 부팅 기록을 보여 주는 명령어이다.

사용법 : last [옵션] [사용자이름] [tty..] 
-num : 지정한 num 만큼의 줄만 보여준다. 
-n num : -num 옵션과 같다. 
-f file : 지정한 파일에서 정보를 불러온다. 
-R : 보여주는 목록에서 hostname 필드는 보여주지 않는다. 
-a : 보여주는 목록에서 hostname 필드를 마지막 필드에 보여준다. 
-d : 다른 호스트에서 접속한 것만 보여준다. 
-x : shutdown이 일어난 상태나, run level이 바뀐 상태를 보여준다. 

/var/log/wtmp 파일은 시스템을 부팅했을 때 부터 지금까지의 모든 사용자의 로그인과 로그아웃에 대한 정보를 가지고 있다. 어던 시스템에서 어떤 사용자가 로그인하였고, 로그 아웃을 하였는지를 알 수 있으므로, 시스템 관리에 매우 유용한 정보가 된다. 이 파일의 내용을 보여주는 명령어가 last 명령어이다.
last -숫자 옵션을 사용하면 last 리스트 목록을 뒤에서부터 지정한 숫자만큼 보여준다.
last -R 옵션은 호스트 이름 필드를 제외한 나머지를 보여준다.
각 로그 파일들은 어느 정도 용량이 차거나 시간이 지나면 새로운 로그파일을 생성하므로, 이전의 로그 기록들을 살펴보기 위해서는 파일을 직접 지정할 필요가 있다. -f 옵션은 로그 파일을 열어서 확인하는데 사용한다.
보통 레드햇리눅스 기준으로 로그 파일은 /var/log 디렉토리에 생성된다. wtmp.1 파일은 이전의 로그 파일이다.

# last -f /var/log/wtmp.1-10 

시스템을 재부 한 내용의 정보만 보고 싶다면 grep 명령을 이용하여 검색한 결과를 출력한다.

# last | grep reboot 

reboot 한 정보를 알수 있다.
2005/06/18 13:21 2005/06/18 13:21
lastlog 파일을 분석 보여주는 명령어

사용법 : lastlog[옵션] 
-u 로그인명 : 지정한 로그인명의 lastlog 정보만을 보여준다. 
-t days : 지정한 날짜기간에 로그인한 정보만을 보여준다. 

lastlog 명령은 /var/log/lastlog 로그 파일의 정보를 보여준다. 이는 사용자들이 마지막에 로그인한 날짜와 호스트명, 포트 등을 볼 수 있다. 만일 수퍼 유저나 일반 사용자를 제외한 /etc/passwd에 등록된 사용자 혹은 이상한 계정의 로그인 정보가 있따면, 크래킹 당한 흔적으로 볼 수 있다.

[관련 명령어]
last /var/log/wtmp 로그 파일 정보를 보여주는 명령어, 사용자의 로그인, 로그 아웃 정보를 볼수 있다.
who /var/log/utmp 로그 파일 정보를 보여주는 명령어. 현재 로그인한 사용자들을 보여준다.
2005/06/18 13:20 2005/06/18 13:20
공유 라이브러리 캐시를 재 설정하는 명령어

사용법 : ldconfig [옵션] 디렉토리 
-C cache : /etc/ld.so.cache 파일 대신 지정한 파일을 이용한다. 
-f conf : /etc/ld.so.conf 파일 대신 지정한 파일을 이용한다. 
-l : 수동으로 개개의 라이브러리를 링크한다. 
-n : 명령행에서 지정한 디렉토리만을 진행하며, /usr/lib, /lib, /etc/ld.so.conf 파일은 진행하지 않는다. 
-N : 캐시를 업데이트 하지 않고, 단지 링크만을 업데이트 한다. 
-p --print-cache : 현재 캐시에 저장된 디렉토리와 라이브러리 목록을 보여준다. 
-r root : 지정한 root를 루트 디렉토리로 이용한다. 
-v, --verbose : 현재 버전 정보와 관련된 디렉토리와 링크들을 상세하게 보여준다. 
-V, --version : 버전정보를 보여준다. 
-X : 링크를 업데이트 하지 않고, 단지 캐시만을 업데이트 한다. 
-?. --help, -usage : 사용법을 보여준다. 
-V, --version : 버전정보를 보여준다. 

라이브러리란 시스템에서 프로그램을 직접 컴파일 할 때 프로그램에서 공통으로 사용하는 기능을 미리 모아 놓은 파일이다. 프로그램은 직접 하나 하나의 기능을 제작하는 대신, 이미 존재하는 라이브러리의 기능을 활용한다. 이것을 동적 링크 프로그램(dynamic linked program)이라 부른다. 또한 컴파일 할 때 자체 라이브러리를 사용하는 것을 정적 링크 프로그램 (statically linked program)이라 한다
동적으로 링크된 실행파일은 공유 라이브러리에 매우 의존적이나, 대부분 현재 라이브러리 버전에는 국한되지는 않는다.
새로운 버전의 라이브러리를 설치한다면, 그것을 사용하기 위해, 틀별한 디렉토리에 설치하고 ldconfig를 실행하여 공유 라이브러리 캐시를 다시 설정해야 한다. ldconfig는 존재하는 파일을 조사하고, /etc/ld.so.cache 의 캐시 파일을 설정하면서 필요한 라이브러리를 적재하고 심볼릭 링크를 만드는 역할을 하는 것이다.
2005/06/18 13:19 2005/06/18 13:19
공유 라이브러리의 의존성을 확인하는 명령어

사용법 : ldd [옵션] 파일 
--version : 버전정보를 보여준다. 
-v, --verbose : 관련된 상세한 정보를 보여준다. 
-d, --data-relocs : 있어야 할 곳에 없는 오브젝트의 위치를 다시 배치하고, 결과를 보여준다. 
-r, --function-relocs : 데이터 오브젝트와 함수의 다시 배치하고, 오브젝트나 함수중 찾을 수 없는 결과는 보여준다. 
--help : 사용법을 보여준다. 

ldd는 프로그램이 시용하는 공유 라이브러리를 알 수 있다. 예를 들어 ls 명령어의 공유 라이브러리 목록을 살펴 보도록하자.

# ldd /bin/ls 
        libtermcap.so.2 => /lib/libtermcap.so.2 (0x4001b000) 
        libc.so.6 => /lib/i686/libc.so.6 (0x42000000) 
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) 

여기서 /lib/libc.so.6은 C 라이버러리이다. 다른 프로그래밍 언어에서도(적어도 그 언어의 라이브러리를 구현하기 위해서) C 라이브러리를 쓰는 경향이 있다. 그래서 모든 프로그램에 이 라이브러리가 포함 될 것이다. /ib/ld-linux.so.2는 다른 모든 라이브러리를 적재한다.
2005/06/18 13:18 2005/06/18 13:18
파일 내용을 페이지 단위로 보여 주는 명령어로, more의 발전된 형태이다.

사용법 : less [옵션] [파일명] 
-?, --help : 명령어에 대한 도움말을 보여준다. 
-a, --search-skip-screen : 마지막 라인이 화면에 출력되고 나서 탐색을 시작한다. 
-c, --clear-screen : 필요할 때 전체 화면을 위에서 아래로 다시 갱신한다. 
-C, --CLEAR-SCREEN : -c옵션과 같지만 갱신할 때, 화면 전체를 지우고 시작한다. 
-e, --quit-at-eof : 파일의 끝에 두 번째에 도달하면 자동적으로 종료한다. 
기본값은 q 가 입력되어야 종료된다. 
-E, --QUIT-AT-EOF : 파일의 끝에 도달하기만 하면 자동적으로 종료한다. 
-i, --ignore-case : 찾기 패턴의 단어 자체의 대소문자를 구분하지 않고 탐색한다. 
-I, --IGNORE-CASE : 찾기 패턴에 포함된 단어의 대소문자를 구분하지 않고 탐색한다. 
-m, --long-prompt : 하단 프롬프트에 more 명령과 같이, 전체 파일내용에서 파일을 읽은 퍼센트를 표시한다. 
-M, -LONG-PROMPT : 하단 프롬프트에 more 명령보다 상세한 정보를 보여준다. 
-n, --line-numbers : 행 번호를 보여주지 않는다. 
-N, --LINE-NUMBERS : 각 행의 시작하는 부분에 행 번호를 보여준다. 
-ofilename, --log-file=filename : 지정한 filename에 보여지는 내용을 저장한다. 
-Ofilename, --LOG-FILE=filename : -o 옵션과 비슷하지만, filename이 존재하면 확인 절차 없이 filename에 내용을 덮어쓴다. 
-q, --quiet or --silent : 특정 에러가 발생하여도 시스템 벨 소리를 내지 않는다. 
-Q, --QUIET or --SILENT : 절대 시스템 벨 소리를 내지 않는다. 
-s, --squeeze-blank-lines : 연속되는 공백 라인을 하나의 행으로 처리한다. 
-xn, --tabs=n : 지정한 n 값 만큼 탭 간격을 조정한다. 기본값은 8이다. 
-V, --version : 버전정보를 보여준다. 

less 명령은 more보다 기능이 추가된 페이지 단위로 파일의 내용을 보여주는 명령어이다.
/etc/sendmail.cf 파일을 한 번 살펴보자. less 명령을 실행 후 입력되는 대부분의 명령어는 vi의 기능과 매우 흡사하다. 실행 후, h를 입력하여 사용 가능한 명령을 한 번 살펴보자.

                   SUMMARY OF LESS COMMANDS 

      Commands marked with * may be preceded by a number, N. 
      Notes in parentheses indicate the behavior if N is given. 

  h  H                 Display this help. 
  q  :q  Q  :Q  ZZ     Exit. 
 --------------------------------------------------------------------------- 

                           MOVING 

  e  ^E  j  ^N  CR  *  Forward  one line   (or N lines). 
  y  ^Y  k  ^K  ^P  *  Backward one line   (or N lines). 
  f  ^F  ^V  SPACE  *  Forward  one window (or N lines). 
  b  ^B  ESC-v      *  Backward one window (or N lines). 
  z                 *  Forward  one window (and set window to N). 
  w                 *  Backward one window (and set window to N). 
  ESC-SPACE         *  Forward  one window, but don't stop at end-of-file. 
  d  ^D             *  Forward  one half-window (and set half-window to N). 
  u  ^U             *  Backward one half-window (and set half-window to N). 
  ESC-(  RightArrow *  Left  8 character positions (or N positions). 
  ESC-)  LeftArrow  *  Right 8 character positions (or N positions). 
HELP -- Press RETURN for more, or q when done 

less 명령어
페이지이동 : 스페이스바, ctrl+V, F, ctrl+F
z : 스페이스 바와 비슷하지만, 숫자를 입력하고 z를 입력하면 지정한 숫자 행만큼 이동한다.
한 줄 아래 이동 : 엔터키, Ctrl+N, e, Ctrl+E, j
반 페이지 하위 이동 : d, ^D
반 페이지 상위 이동 : b, ^B, ESC-v
한 줄 위로 이동 : y, Ctrl+Y, Ctrl+P, k, Ctrl+K
반 페이지 상위 이동 u, Ctrl+U
화면 새로 고침 : r, Ctrl+R, Ctrl+I
종료 : q

이외에도, 파일 찾기를 위해서는 /이나 ?를 입력후, 찾고자 하는 패턴을 찾으면 된다. /는 아래로 이동하면서 찾으며, ?는 위로 이동하면서 찾게된다. 하나의 패턴을 찾았으면, 찾는 문자에 대해 블록이 지정되며, 다음을 찾기 위해서는 n 키를 입력한다. 이외에도 많은 기능이 있지만, 그 외의 기능은 vi 에디터와 매우 흡사하므로, vi 에디터 부분을 참조해 보기 바란다.
2005/06/18 13:06 2005/06/18 13:06
처음 부팅을 시작할 때 실제적으로 부팅 과정을 담당할 부트 이미지를 불러 오기 위해 먼저 구동되는 명령이다.

사용법 : lilo [옵션] 
-v : 상세한 정보를 보여준다. 
-q : 현재 맵 파일의 리스트 lilo는 기본적으로 /boot/map에 의해 유지되고 부트에 대한 커널의 이름과 위치를 포함한다. 이 옵션은 그곳에 있는 파일들의 목록을 보여 줄 것이다. 
-m map-file : 지정한 map-file를 사용한다. 
-C config-file : 지정한 config-file에서 설정 파일을 읽어 온다. 
 기본은 /etc/lilo.conf 파일이다. 
-d delay : 리로 부트 화면에서 아무 키 입력이 없을 경우 자동으로 디폴트 시스템으로 부팅한다. 이 자동으로 부팅될 시간을 delay로 지정한다. 이는 0.1초 단위로 입력하며, 입력 가능한 라벨은 탭 키를 입력하면 볼 수 있다. 만일 delay가 50으로 설정되었다면, 5초를 말한다. 
-D label : 리로 부트 화면에서 디폴트로 선택될 라벨을 지정한다. 
-r root-directory : 어떤 작업을 하기 전에 chroot로 디렉토리를 변경한다. 
 플로피 디스크로 부팅하여 설정을 변경할 경우 사용한다. 
-t : 새로운 부트 섹터나 맵 파일을 생성하지 않고, 테스트만을 수행한다. 
-c : 맵을 간단하게 하여, 인접한 섹터로부터의 요청을 하나로 한다. 
-f disk-tab : 지정한 disk-tab 파일을 디스크 지오메트리 매개변수로 한다. 
 기본값은 /etc/disktab이다. 
-i boot-sector : 지정한 boot-sector파일로 새로운 부트 섹터를 생성한다. 
 기본값은 /boot/boot.b이다. 
-l : 섹트/해드/실린더 주소 대신에 선형 섹터 주소(linear sector address)를 생성한다. 
-s save-file : lilo가 부트 섹터를 덮어쓸 때, 기본 값 /boot/boot.NNNN으로 이전의 내용을 보존한다. NNNN은 장치에 의존한다. 이 옵션은 그 대신 부트 섹터를 보존하기 위해 지정한다. 또는, -u과 같이 지정하여 부트 섹터를 복구하기 위해 지정한다. 
-S save-file : 지정한 파일로 덮어쓰기를 한다. 
-u device-name : 부트 섹터에 저장된 lilo를 제거한다. 
-U device-name : -u와 같이 lilo를 제거하는 것은 동일하지만 시간-지표를 검사 하지 않는다. 
-R command line : 다음 부팅 시에 사용되는 기본 명령을 실정한다. 
-l label : 시스템이 시작된 후에, 환경 변수 BOOT_IMAGE의 실행 커널의 라벨을 참조할 수 있도록 한다. 
-V : 버전 정보를 보여준다. 

lilo는 GRUB과 함께 리눅스 부트 로더 중 하나이다. 기본 설정파일은 /etc/lilo.conf파일이다.
아래는 설정 파일의 예제를 보여준다. 시스템의 하드디스크에 설치한 OS 내역은 다음과 같다. 윈도우는 Primary Slave HDD 첫 번째 파티션에 설치(/dev/hdb1)되어 있으며, 리눅스는 Primary Master HDD 8번째 파티션에 /roo 설치 (/dev/hda8)되어 있다고 가정하자.

# cat /etc/lilo.conf 
prompt 
timeout=50 
default=linux 
boot=/dev/hda 
map=/boot/map 
install=/boot/boot.b 
message=/boot/message 
lba32 

image=/boot/vmlinuz-2.4.13-1hl 
          label=linux 
          read-only 
          root=/dev/hda8 
          other=/dev/hdb1 
                  label=windows 

이 파일에서 설정한 옵션을 간단히 살펴보고 넘어가자.

timeout : 부팅에서 LILO화면에서 키보드 입력이 없는 경우, 자동 부팅되는 시간을 지정한다.
default : 멀티 부팅을 설정하는 경우 디폴트로 선택될 label을 지정한다. 위의 예에서 리눅스는 /dev/hda8 에 설치되어 있으며, 윈도우는 /dev/hdb1 파티션에 설치되어 있다. default로 linux를 지정하여 label 옵션에서 지정한 이름으로 리눅스를 지정하였다. 만일 이를 windows로 변경하면 기본 디폴트 선택은 windows가 된다.
boot : LILO가 설치될 파티션을 지정한다. /dev/hda라고 지정하면 Primary Master HDD의 MBR 영역에 LILO가 설치된다.
map : 맵 이미지를 지정한다.
message : LILO 화면 이미지를 지정한다.
lba32 : HDD의 LBA 기능을 사용한다. 대용량 하드 디스크에서 사용한다.
image : 리눅스 커널 이미지를 지정한다.
label : 이름을 지정한다.
read-only : 읽기 전용으로 로드한다.
root : 리로가 읽어 들일 기본 파티션을 지정한다.
other : 멀티 부트로 지정할 파티션을 지정한다.
2005/06/18 13:05 2005/06/18 13:05
파일을 실제 경로가 아니라 사용하기 편리한 다른 경로로 접근할 수 있도록 지정하는 명령어이다.

사용법 : 
ln [옵션] 원본 [대상] 
ln [옵션] 원본... 디렉토리 
-b, --backup : 대상 파일이 있다면 백업파일을 생성한다. 
-d, -F, --directory : 디렉토리를 하드 링크가 생성되게 한다. (root 계정만 가능) 
-f, --force : 링크를 생성할 대상 파일이 있더라도 강제적으로 새로운 링크를 생성한다. 
-i, --interactive : 링크를 생성할 대상 파일이 있을 경우, 삭제 유무를 사용자에게 물어본다. 
-n, --no-dereference : 링크할 원본이 심볼릭 파일이면, 그 심볼릭 파일의 대상 파일을 추적하여 링크한다. 
-s, --symbolic : 링크할 원본이 심볼릭 파일이면, 심볼릭 파일로 링크한다. 
-v, --verbose : 진행되는 상태를 자세하게 보여준다. 
--help : 도움말을 보여준다. 
--version : 버전 정보를 보여준다. 
-S, --suffix backup-suffix : 링크를 생성할 대상 파일이 이미 있을 경우, 이전의 대상파일을 백업할 파일의 확장자를 지정한다. 
-V, --version-control {numbered, existing, simple} : 백업하는 방법을 지정한다. 
 t. numbered : 항상 번호로 된 백업파일을 만든다. 
 nil, existing : 대상파일이 있을 경우에만 백업파일을 만든다. 
 never, simple : 간단한 백업을 만든다. 

파일을 링크하는 방법은 심볼릭 링크와 하드링크가 있다. 심볼릭 링크를 소프트 링크라고도 한다.
심볼릭 링크, 소프트 링크
일반적으로 링크라고 하면 심볼릭 링크(Symbolic link)를 말한다고 생각해도 무방하다. 심볼릭 링크는 소프트 링크(Symbolic link)라고도 한다. 심볼릭 링크는 불필요한 파일의 복사를 하지 않아도 된다. 보통 여러 디렉토리에서 동일한 라이브러리를 요구할 경우나, 하나의 파일을 여러 사용자가 공통으로 사용할 경우도 많이 쓰인다.

# ln -s /home/admin/html /var/www 
# ls -al www 
lrwxrwxrwx  1 root root 7 May  7  11:38 www->/home/admin/html 

하드 링크
하드 링크(Hard link)는 똑같은 파일크기로 원본 파일이 수정될 경우, 하드 링크된 파일도 원본과 동일하게 변경되며 항상 같은 내용을 유지할 수 있다. 원본이 삭제되어도 원본과 동일한 내용을 가지고 있으므로 자원을 공유하되 데이터를 안전하게 관리하고자 할 때 유용하게 사용할 수 있다.

심볼릭 링크와 하드 링크의 차이


                       심볼릭 링크              하드 링크 
파일크기            작다                       원본과 동일하다 
원본파일 삭제시   사용불가능하다          사용가능하다. 
퍼미션               'l'로 표시된다            일반 파일이다
2005/06/18 13:03 2005/06/18 13:03
언어 등의 각 국가별로 선택할 수 있는 정보를 볼 수 있다.

사용법 : 
local [옵션] 이름 
local [옵션] [-a|-m] 
-a, --all-locales : 사용 가능한 로케일의 이름을 보여준다. 
-m, --charmaps : 사용 가능한 문자지도의 이름들을 보여준다. 
-c, --category-name : 사용 가능한 범주의 이름을 보여준다. 
-k, --keyword-name : 선택된 키워드의 이름을 보여준다. 
-v, --verbose : 상세한 정보를 보여준다. 
-?, --help : 도움말을 보여준다. 
-V, --version : 프로그램 버전정보를 보여준다. 

로케일은 프로그램의 언어 사항과 관련이 있다. 만일 다양한 로케일을 설치해두었다면 다음 환경 변수 설정을 통하여 로케일을 지원하는 프로그램의 실행 방식을 선택할 수 있다. 기본 로케일은 C 또는 POSIX로 설정이 되어 있다. 현재 시스템의 로케일은 local 명령으로 볼수 있다.

# local 
bash: local: can only be used in a function 
[root@airz spooky]# locale 
LANG=en_US.iso885915 
LC_CTYPE="en_US.iso885915" 
LC_NUMERIC="en_US.iso885915" 
LC_TIME="en_US.iso885915" 
LC_COLLATE="en_US.iso885915" 
LC_MONETARY="en_US.iso885915" 
LC_MESSAGES="en_US.iso885915" 
LC_PAPER="en_US.iso885915" 
LC_NAME="en_US.iso885915" 
LC_ADDRESS="en_US.iso885915" 
LC_TELEPHONE="en_US.iso885915" 
LC_MEASUREMENT="en_US.iso885915" 
LC_IDENTIFICATION="en_US.iso885915" 
LC_ALL= 

레드햇 계열 배포판에서 X윈도우의 로케일 관련 디렉토리는 /usr/X11R6/lib/X11/locale이다.
2005/06/18 13:00 2005/06/18 13:00