Search Results for 'OS 운영체제 및 보안/Linux'

34 POSTS

  1. 2008.10.24 Linux 시스템 cpu,메모리 점검
  2. 2008.10.24 예제] Linux Master/Slave View설정
  3. 2008.10.24 Linux에서 JDK 설치
  4. 2008.10.24 RPM 사용법
  5. 2008.10.24 FTP 계정 사용자의 상위 디렉토리로의 이동 제한
  6. 2008.10.24 APM 모음팁
  7. 2008.10.24 하드 디스크 추가하기..

Linux 시스템 cpu,메모리 점검

Posted 2008. 10. 24. 04:45

출처 : http://cafe.naver.com/dnspro/2512

 

 

3.10 시스템 정보보기


1) cpu정보보기  

# more  /proc/cpuinfo 

 

2) 메모리 정보보기 

 

#  free  –mt 

usage: free [-b|-k|-m|-g] [-l] [-o] [-t] [-s delay] [-c count] [-V]
        -b,-k,-m,-g show output in bytes, KB, MB, or GB
          -h show detailed low and high memory statistics
          -o use old format (no -/+buffers/cache line)
        -t display total for RAM + swap

 

# more /proc/meminfo

 

3) 하드용량보기      

# df –h 

Filesystem            Size  Used Avail Use% Mounted on
/dev/hda2              28G  4.6G   22G  18% /
/dev/hda1              99M  9.2M   85M  10% /boot
none                  251M     0  251M   0% /dev/shm

root]#

 

4) 인터페이스 ip정보 보기
# ifconfig eth0

# ifconfig  –a

 

# vi /etc/sysconfig/i18n   (언어 로케일설정)

LANG="ko_KR.eucKR"

SUPPORTED="ko_KR.eucKR:ko_KR:ko"

SYSFONT="lat0-sun16"

SYSFONTACM="iso15"
 

en_US

 

# Vi .bashrc

# export LANG=ko_KR.eucKR (자신의 쉘에 언어코드 변경) 

또는 

#  export LANG=en_US

# LANG=en

 


3.10.1 CPU 문제 점검 - top, ps, uptime, vmstat, pstree 등

 

1) CPU 활용량, 프로세스상태, 메모리확용량

 

# top  

CPU0 states:  0.0% user,  0.2% system,  0.0% nice, 99.3% idle
CPU1 states:  0.0% user,  0.0% system,  0.0% nice, 100.0% idle
Mem:  1033308K av, 1007748K used,   25560K free,       0K shrd,   98256K buff
// 메모리 1Giga , 1Giga가까이 사용중, 남음메모리는 25 Mega

                                                                  


3.10.2 메모리 문제 점검 : free, vmstat 등

 

1)  # free    -mt

                 total       used       free     shared    buffers     cached
Mem:           501        485         16          0        120        148
-/+ buffers/cache:        216        285
Swap:         1019         13       1006
Total:        1521        498       1022

// 512Mega 메모리에  485M 사용중이고,  16M 여유가 있다.
 

 

2) # vmstat 1
   procs                      memory      swap          io     system      cpu
 r  b  w   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id
 1  0  0  13332  16488 123720 152352    0    0     0     5    4     2  0  0     2
 0  0  0  13332  16488 123720 152352    0    0     0     0  106    28  0  0  100
 0  0  0  13332  16488 123720 152352    0    0     0    28  107    39  0  0  100

// 164M 여류가 있다. ,

 

# vmstat 3 20    (3초마다 20번상태 보기)

procs                      memory      swap          io     system         cpu
r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
0  0      0 1746628  82216  83888    0    0     0     1   53     4  0  0 100  0
//1.7 Giga메모리가 남아 있음.

 

// 프로세스 관련 항목: r  : CPU 접근 대기 중인 실행 가능 프로세스 수,  b : 인터럽트 불가능한 수면 상태인 프로세스 수

// 메모리 관련 항목 : swpd — 사용된 가상 메모리 용량,  free — 여유 메모리 용량, buff — 버퍼에 사용된 메모리 용량, cache — 페이지 캐시에 사용된 메모리 용량

// 스왑 관련 항목 : si — 디스크에서 스왑된 메모리 용량, so — 디스크로 스왑되어 나간 메모리 용량

// 입출력 관련 항목 : bi — 블록 장치로 보내진 블록, bo — 블록 장치에서 받아온 블록

// 시스템 관련 항목 : in — 일초당 인터럽트 수, cs — 일초당 문맥 전환 작업수

// CPU 관련 항목 : us — CPU가 사용자 수준 코드를 실행한 시간 (백분율 단위), sy — CPU가 시스템 수준 코드를 실행한 시간 (백분율 단위),id — CPU가 아무런 작업을 수행하지 않은 시간 (백분율), wa — 입출력 대기

 

 

3.10.3 메모리에 문제가 없다면 디스크 I/O 점검 : 

#df -h, du, 쿼타 등

 

3.10.4 디스크와 메모리에 문제가 없는데도 시스템에 문제가 생기면, CPU의 오버헤드에 문제가 있을 가능성이 크다

 

3.10.5  기타 디렉토리 관련 명령어

1) 현재 디렉토리 총용량보기  

#  du -c -h --max-depth=0

4.6G    합계

 

2) 현재 디렉토리크기         

# du -h --max-depth=1 .

 

3) 가장 큰 파일 찾기  

#  ls -lR | sort +4n

 

5) 어떤 프로세서가 가장 많은 메모리를 잡아먹구 있나?  

# ps -aux | sort +4n

 

6) 원하지 않는 사용자 터미널 접속끊기 ( session )

# w 

# skill -Kill -v pts/11   ( # skill -kill user111 )

 

7) 날짜 싱크

# date 

# rdate -s time.bora.net

# clock -w

 

8) 열린포트보기

#  netstat -anp | grep LISTEN

 

9) 접속자에게 메시지 보내기  

#  wall 지금 서버점검합니다. 로그아웃해주세요. 문제있으면 전화주세요 02-111.1111      Ctrl-D 

 

10) icmp echo 막기

#   echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

 

11) 하루동안 만들어진 파일중 hack 들어가는거 찾기 :

# find / -ctime -1 | grep hack

 

 

3.10.6  로그온 사용자 점검

 

과거에 로그온 한 사용자 기록보기 

# Last 

 

사용자별 마지막 로그온 시간 보기 

# lastlog

 

콘솔이 아닌곳에서 루트로 로그인한 것 찾기 

# last root |grep -v console  

 

프로세서 보기  

# Ps –au | more

 

현재 로그인한 사람 정보 보기  

# Who 

 


'OS 운영체제 및 보안 > Linux' 카테고리의 다른 글

Vi 편집기 사용법  (0) 2008.10.24
Vi 편집기 사용법  (0) 2008.10.24
crontab 간단 정리  (0) 2008.10.24
Named 최신버전으로 업그레이드  (0) 2008.10.24
DNS 기본 보안 설정  (0) 2008.10.24
예제] Linux Master/Slave View설정  (0) 2008.10.24
Linux에서 JDK 설치  (0) 2008.10.24
RPM 사용법  (0) 2008.10.24
FTP 계정 사용자의 상위 디렉토리로의 이동 제한  (0) 2008.10.24
APM 모음팁  (0) 2008.10.24

예제] Linux Master/Slave View설정

Posted 2008. 10. 24. 04:44


출처 카페 > DNS전문가 | 호야
원문 http://cafe.naver.com/dnspro/3659

 

 

안녕하세요. 

제가 만든 서버 무료점검사이트인 www.serverchk.com 사이트를 다른IDC에 서버이중화 해놓았습니다.

(퇴근하고만 시간이 되서, 어제 퇴근하고 새벽 3시까지 작업했네요 ㅎㅎ)

 

기능이 좋아서라기보다는 다른사이트에서 홍보를 많이 해주셔서, 하루에 1000명이상 접속을 하네요 ^^

(단지, 웹서버가 2대로 분리했더니 카운터 1000에서 500,500으로 표시되네요 ㅎㅎ)

어제 네임서버와 웹서버이중화 했습니다.  참고로 네임서버 설정은 올립니다.

 

1. ns1설정

 

[root@localhost ~]# cd /etc
[root@localhost etc]# more named.conf
acl "localarea" {
        211.35.64.72;
};


options {
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        pid-file "/var/run/named.pid";
        version " No touch !!! No !!";

         allow-transfer { 211.35.64.72; };
};

logging {
        channel debug_log {
                file "/var/log/named/debug.log" versions 3 size 10m;
                severity        debug;
                print-category  yes;
                print-severity  yes;
                print-time      yes;
        };
       
        channel audit_log {
                file "/var/log/named/audit.log" versions 3 size 10m;
                severity        debug;
                print-category  yes;
                print-severity  yes;
                print-time      yes;
        };

        channel query_log {
                file "/var/log/named/query.log" versions 3 size 10m;
                severity        debug;
                print-category  yes;
                print-severity  yes;
                print-time      yes;
        };


        category default { debug_log; };
        category general { debug_log; };
        category security { audit_log; debug_log; };
        category config { debug_log; };
        category resolver { audit_log; };
        category xfer-in { audit_log; };
        category xfer-out { audit_log; };
        category notify { audit_log; };
        category client { audit_log; };
        category network { audit_log; };
        category update { audit_log; };
        category queries { query_log; };
        category lame-servers { audit_log; };
};

//
// a caching only nameserver config
//

# Use with the following in named.conf, adjusting the allow list as needed:
 key "rndc-key" {
       algorithm hmac-md5;
       secret "s60KMc/Rb6gRrN+wQppvZA==";
 };
 
 controls {
       inet 127.0.0.1 port 953
               allow { 127.0.0.1; } keys { "rndc-key"; };
 };
# End of named.conf


view "local" {
       match-clients           {  localarea; };
        recursion yes;

zone "." IN {
        type hint;
        file "named.ca";
};

zone "localdomain" IN {
        type master;
        file "localdomain.zone";
        allow-update { none; };
};

zone "serverchk.com" IN {
        type master;
        file "serverchk.com.zone";
};

zone "localhost" IN {
        type master;
        file "localhost.zone";
        allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.local";
        allow-update { none; };
};

zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.ip6.local";
        allow-update { none; };
};

zone "255.in-addr.arpa" IN {
        type master;
        file "named.broadcast";
        allow-update { none; };
};

zone "0.in-addr.arpa" IN {
        type master;
        file "named.zero";
        allow-update { none; };
};

};

view "external" {
       match-clients           { any; };
        recursion yes;

zone "serverchk.com" IN {
        type master;
        file "serverchk.com.zone";
        allow-update { none; };
};


zone "yahooms.com" IN {
        type master;
        file "yahooms.com.zone";
        allow-update { none; };
};

zone "yahooms.co.kr" IN {
        type master;
        file "yahooms.co.kr.zone";
        allow-update { none; };
};

zone "msyahoo.co.kr" IN {
        type master;
        file "msyahoo.co.kr.zone";
        allow-update { none; };
};

zone "foxylady.co.kr" IN {
        type master;
        file "foxylady.co.kr.zone";
        allow-update { none; };
};

zone "yejin.pe.kr" IN {
        type master;
        file "yejin.pe.kr.zone";
        allow-update { none; };
};


include "/etc/synchole.conf";
};

[root@localhost etc]#         
[root@localhost etc]# cd /var/named/
[root@localhost named]# more serverchk.com.zone
$TTL    10
@               IN SOA  ns1.serverchk.com. root (
                                        2007072007      ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
                IN NS           ns1.serverchk.com.
                IN NS           ns2.serverchk.com.
                IN MX   0       mail.serverchk.com.

                        IN A            210.116.123.25
                        IN A            211.35.64.72
ns1.serverchk.com.      IN A            210.116.123.25
ns2.serverchk.com.      IN A            211.35.64.72

mail                    IN A            210.116.123.25
www                     IN A            210.116.123.25
                        IN A            211.35.64.72
serverchk.com.          IN      TXT     "v=spf1 ip4:210.116.123.25 ~all"
[root@localhost named]#

 

 

2. ns2설정 - Slave이니 Zone File은 Master에서 가져온갑니다.

 

[root@proxy01 root]# cd /etc
[root@proxy01 etc]# more named.conf
acl "localarea" {
        127.0.0.1;
        210.116.123.25;
        211.35.64.72;
};


options {
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        pid-file "/var/run/named.pid";
        version " No touch !!! No !!";
         allow-transfer {  211.35.64.72; };
};

logging {
        channel debug_log {
                file "/var/log/named/debug.log" versions 3 size 10m;
                severity        debug;
                print-category  yes;
                print-severity  yes;
                print-time      yes;
        };
       
        channel audit_log {
                file "/var/log/named/audit.log" versions 3 size 10m;
                severity        debug;
                print-category  yes;
                print-severity  yes;
                print-time      yes;
        };

        channel query_log {
                file "/var/log/named/query.log" versions 3 size 10m;
                severity        debug;
                print-category  yes;
                print-severity  yes;
                print-time      yes;
        };


        category default { debug_log; };
        category general { debug_log; };
        category security { audit_log; debug_log; };
        category config { debug_log; };
        category resolver { audit_log; };
        category xfer-in { audit_log; };
        category xfer-out { audit_log; };
        category notify { audit_log; };
        category client { audit_log; };
        category network { audit_log; };
        category update { audit_log; };
        category queries { query_log; };
        category lame-servers { audit_log; };
};

//
// a caching only nameserver config
//


view "local" {
       match-clients           {  localarea; };
        recursion yes;

zone "." IN {
        type hint;
        file "named.ca";
};

zone "localdomain" IN {
        type master;
        file "localdomain.zone";
        allow-update { none; };
};

zone "serverchk.com" IN {
        type slave;
        file "serverchk.com.zone";
        masters { 210.116.123.25; };
};

zone "localhost" IN {
        type master;
        file "localhost.zone";
        allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.local";
        allow-update { none; };
};

zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" I
N {
        type master;
        file "named.ip6.local";
        allow-update { none; };
};

zone "255.in-addr.arpa" IN {
        type master;
        file "named.broadcast";
        allow-update { none; };
};

zone "0.in-addr.arpa" IN {
        type master;
        file "named.zero";
        allow-update { none; };
};

};

view "external" {
       match-clients           { any; };
        recursion yes;

zone "serverchk.com" IN {
        type slave;
        file "serverchk.com.zone";
        masters { 210.116.123.25; };
};


zone "yahooms.com" IN {
        type slave;
        file "yahooms.com.zone";
        masters { 210.116.123.25; };
};

zone "yahooms.co.kr" IN {
        type slave;
        file "yahooms.co.kr.zone";
        masters { 210.116.123.25; };
        allow-update { none; };
};

zone "msyahoo.co.kr" IN {
        type slave;
        file "msyahoo.co.kr.zone";
        masters { 210.116.123.25; };
        allow-update { none; };
};

zone "foxylady.co.kr" IN {
        type slave;
        file "foxylady.co.kr.zone";
        masters { 210.116.123.25; };
        allow-update { none; };
};

zone "yejin.pe.kr" IN {
        type slave;
        file "yejin.pe.kr.zone";
        masters { 210.116.123.25; };
        allow-update { none; };
};


//include "/etc/synchole.conf";
};
[root@proxy01 etc]#         
[root@proxy01 etc]# cd /var/named/
[root@proxy01 named]# more serverchk.com.zone
$ORIGIN .
$TTL 10 ; 10 seconds
serverchk.com           IN SOA  ns1.serverchk.com. root.serverchk.com. (
                                2007072007 ; serial
                                10800      ; refresh (3 hours)
                                900        ; retry (15 minutes)
                                604800     ; expire (1 week)
                                86400      ; minimum (1 day)
                                )
                        NS      ns1.serverchk.com.
                        NS      ns2.serverchk.com.
                        A       210.116.123.25
                        A       211.35.64.72
                        MX      0 mail.serverchk.com.
                        TXT     "v=spf1 ip4:210.116.123.25 ~all"
$ORIGIN serverchk.com.
mail                    A       210.116.123.25
ns1                     A       210.116.123.25
ns2                     A       211.35.64.72
www                     A       210.116.123.25
                        A       211.35.64.72
[root@proxy01 named]#

 

 

 

 

3. 확인

 

[root@proxy01 root]# dig @127.0.0.1 www.serverchk.com

; <<>> DiG 9.3.2 <<>> @127.0.0.1 www.serverchk.com
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63702
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.serverchk.com.             IN      A

;; ANSWER SECTION:
www.serverchk.com.      10      IN      A       210.116.123.25
www.serverchk.com.      10      IN      A       211.35.64.72

;; AUTHORITY SECTION:
serverchk.com.          10      IN      NS      ns2.serverchk.com.
serverchk.com.          10      IN      NS      ns1.serverchk.com.

;; ADDITIONAL SECTION:
ns1.serverchk.com.      10      IN      A       210.116.123.25
ns2.serverchk.com.      10      IN      A       211.35.64.72

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Dec 15 09:50:03 2007
;; MSG SIZE  rcvd: 135

 

- 이상 끝 -

'OS 운영체제 및 보안 > Linux' 카테고리의 다른 글

Vi 편집기 사용법  (0) 2008.10.24
crontab 간단 정리  (0) 2008.10.24
Named 최신버전으로 업그레이드  (0) 2008.10.24
DNS 기본 보안 설정  (0) 2008.10.24
Linux 시스템 cpu,메모리 점검  (0) 2008.10.24
Linux에서 JDK 설치  (0) 2008.10.24
RPM 사용법  (0) 2008.10.24
FTP 계정 사용자의 상위 디렉토리로의 이동 제한  (0) 2008.10.24
APM 모음팁  (0) 2008.10.24
하드 디스크 추가하기..  (0) 2008.10.24

Linux에서 JDK 설치

Posted 2008. 10. 24. 04:41


출처 : http://blog.naver.com/mook0324?Redirect=Log&logNo=130005501334

 

리눅스에서 jdk(java development kit) 을 설치해 보겠습니다.

설치 목적은 sunone web server 를 깔기 위해서 였습니다.(sunone web server 설치는 필자의 블로그에서 sunone 으로 검색하시면 나옴)

환경은 redhat9 이며 fedora 에서도 무리없이 깔리며 Enterprise AS 4 에서도 깔립니다(다 깔아봤음)

 

1. jdk를 다운 받습니다.

 http://java.sun.com/ > download > j2se > JDK 5.0 updates7 > Download jdk 5.0 update 7 >

로 가면 Linux Platform - J2SE(TM) Development Kit 5.0 Update 7 에서

Linux RPM in self-extracting file 와 Linux self-extracting file  파일이 있습니다.

 

2. RPM 파일로 깔기

[root@angka test]# ls
j2re-1_4_2_12-linux-i586.bin  jdk-1_5_0_07-linux-i586-rpm.bin
[root@angka test]# sh j
j2re-1_4_2_12-linux-i586.bin     jdk-1_5_0_07-linux-i586-rpm.bin 
[root@angka test]# sh jdk-1_5_0_07-linux-i586-rpm.bin

( '') binary 파일을 실행시켜 주면 바로 rpm으로 설치 해주며 rpm 파일도 만들어 줍니다.


Sun Microsystems, Inc. Binary Code License Agreement

for the JAVA 2 PLATFORM STANDARD EDITION DEVELOPMENT
KIT 5.0

SUN MICROSYSTEMS, INC.  ("SUN") IS WILLING TO LICENSE
THE SOFTWARE IDENTIFIED BELOW TO YOU ONLY UPON THE
CONDITION THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN
 

중략 ....

THIRDPARTYLICENSEREADME.txt file, the disclaimer of
warranty and limitation of liability provisions in
paragraphs 5 and 6 of the Binary Code License Agreement
shall apply to all Software in this distribution.

H.  Termination for Infringement.  Either party may
terminate this Agreement immediately should any
Software become, or in either party's opinion be likely
to become, the subject of a claim of infringement of
any intellectual property right.

For inquiries please contact:  Sun Microsystems, Inc.,
4150 Network Circle, Santa Clara, California 95054,
U.S.A.  (LFI#143333/Form ID#011801)

Do you agree to the above license terms? [yes or no]
  yes                                                    <--- 라이센스 정책에 yes 해줍니다.

Unpacking...
Checksumming...
0
0
Extracting...
UnZipSFX 5.42 of 14 January 2001, by Info-ZIP (Zip-Bugs@lists.wku.edu).
  inflating: jdk-1_5_0_07-linux-i586.rpm 
준비 중...                  ########################################### [100%]
   1:jdk                    ########################################### [100%]
 
Done.

[root@angka test]# ls
j2re-1_4_2_12-linux-i586.bin  jdk-1_5_0_07-linux-i586-rpm.bin  jdk-1_5_0_07-linux-i586.rpm

3. 깔린곳 보기

 

[root@angka jdk1.5.0_07]# pwd
/usr/java/jdk1.5.0_07
[root@angka jdk1.5.0_07]# ls
COPYRIGHT  README.html                  bin   include  lib  sample
LICENSE    THIRDPARTYLICENSEREADME.txt  demo  jre      man  src.zip
[root@angka jdk1.5.0_07]#

 

 

4. /etc/profile 이나 /.profile 혹은 /.bash_profile 중 아무곳이나 jdk에 path를 잡아줍니다.

 

[root@angka java]# vi /etc/profile

##### for jdk setting #####
export JAVA_HOME=/usr/java/jdk1.5.0_07

export PATH=$PATH:/usr/java/jdk1.5.0_07/bin   <--- 이 부분을 붙여 주시고
"/etc/profile" 54L, 945C 저장 했습니다                                                
[root@angka java]# . /etc/profile                         <-- 파일을 적용시킵니다.
[root@angka java]#

 

5. 잘 깔렸나 확인해보기

-  jdk 가 RPM으로 잘 깔렸나 확인해봅니다.

[root@angka java]# rpm -qa | grep jdk
jdk-1.5.0_07-fcs
[root@angka java]#

 

-  jdk 의 version을 확인해봅니다.

[root@angka java]# java -version
java version "1.5.0_07"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-b03)
Java HotSpot(TM) Client VM (build 1.5.0_07-b03, mixed mode, sharing)
[root@angka java]#

 

 

6. 자 그럼 이제 binary 파일로 깔아 보겠습니다.

 

-1.5 버젼을 깔아 봤으니 binary 파일은 1.4.2 버젼으로 깔아 보겠습니다.

 

- 일단 rpm 으로 깐 jdk를 지웁니다.

[root@angka java]# rpm -e jdk-1.5.0_07-fcs

 

- /test 로 받았던 파일을 /usr/local 로 옮깁니다. 왜냐면 binary 파일은 실행시킨 그 디렉토리 밑에 설치가 되기 때문이며 보통 리눅스 소프트웨어는 /usr/local 밑에 깔기때문이져.

 

[root@angka local]# mv j2re-1_4_2_12-linux-i586.bin /test
[root@angka local]# cd /test
[root@angka test]# ls
j2re-1_4_2_12-linux-i586.bin  jdk-1_5_0_07-linux-i586-rpm.bin
[root@angka test]# mv j2re-1_4_2_12-linux-i586.bin /usr/local
[root@angka test]# cd /usr/local
[root@angka local]# ls
bin  etc  games  include  j2re-1_4_2_12-linux-i586.bin  lib  libexec  man  sbin  share  src
[root@angka local]#

 

- 파일을 실행 시킵니다.

 

[root@angka local]# sh j2re-1_4_2_12-linux-i586.bin

 

          Sun Microsystems, Inc.
          Binary Code License Agreement
                  for the
JAVATM 2 RUNTIME ENVIRONMENT (J2RE), STANDARD EDITION,
              VERSION 1.4.2_X

SUN MICROSYSTEMS, INC. ("SUN") IS WILLING TO LICENSE THE
SOFTWARE IDENTIFIED BELOW TO YOU ONLY UPON THE CONDITION
THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN THIS BINARY
CODE LICENSE AGREEMENT AND SUPPLEMENTAL LICENSE TERMS
(COLLECTIVELY "AGREEMENT").  PLEASE READ THE AGREEMENT
CAREFULLY.  BY DOWNLOADING OR INSTALLING THIS SOFTWARE, YOU
ACCEPT THE TERMS OF THE AGREEMENT. INDICATE ACCEPTANCE BY
SELECTING THE "ACCEPT" BUTTON AT THE BOTTOM OF THE
AGREEMENT. IF YOU ARE NOT WILLING TO BE BOUND BY ALL THE
TERMS, SELECT THE "DECLINE" BUTTON AT THE BOTTOM OF THE
AGREEMENT AND THE DOWNLOAD OR INSTALL PROCESS WILL NOT
CONTINUE.

 

중략....

 

F.Third Party Code. Additional copyright notices and
license terms applicable to portions of the Software are
set forth in the THIRDPARTYLICENSEREADME.txt file. In
addition to any terms and conditions of any third party
opensource/freeware license identified in the
THIRDPARTYLICENSEREADME.txt file, the disclaimer of
warranty and limitation of liability provisions in
paragraphs 5 and 6 of the Binary Code License Agreement
shall apply to all Software in this distribution.

For inquiries please contact: Sun Microsystems, Inc., 4150
Network Circle, Santa Clara, California 95054, U.S.A.
(LFI#129530/Form ID#011801)

Do you agree to the above license terms? [yes or no]
 yes                                     <--- 역시 라이센스 정책에 yes 해줍니다.

 

... 중략...

 extracting: j2re1.4.2_12/javaws/sunlogo64x30.gif 
Creating j2re1.4.2_12/lib/rt.jar
Creating j2re1.4.2_12/lib/jsse.jar
Creating j2re1.4.2_12/lib/charsets.jar
Creating j2re1.4.2_12/lib/ext/localedata.jar
Creating j2re1.4.2_12/lib/plugin.jar
Creating j2re1.4.2_12/javaws/javaws.jar
Done.            <-- 설치가 끝났내요

 

- /usr/local 디렉토리에 j2re1.4.2_12 디렉토리가 만들어 진것이 보일겁니다. 이걸로 jdk를 binary 로 까는것은 끝입니다. 넘 간단한가..^^"

[root@angka local]# ls
bin  games    j2re-1_4_2_12-linux-i586.bin  lib      man   share
etc  include  j2re1.4.2_12                  libexec  sbin  src
[root@angka local]#

 

- 마찬가지로 /etc/profile , /.profile , /.bash_profile 중 하나에 java  path를 설정해 줍니다.

 

[root@angka local]# vi /etc/profile

##### for jdk setting #####
export JAVA_HOME=/usr/local/j2re1.4.2_12
export PATH=$PATH:/usr/local/j2re1.4.2_12/bin

"/etc/profile" 54L, 955C 저장 했습니다                                               
[root@angka local]# . /etc/profile  <-- 역시 설정 변경한것을 읽혀줍니다.

 

주의 하실점은 rpm으로 깔았을때 기본 디렉토리는 /usr/local 이 아니라 /usr/java 로 된다는 것입니다. 여러분들이 저에게 문의하시는데 /usr/java 밑으로 들어갑니다.

 

끝..

RPM 사용법

Posted 2008. 10. 24. 04:40

출처 : Tong - e돌람바님의 OS통

1. RPM의 개요 

리눅스 배포판들은 기본적으로 package라는 단위로 구성되어있다. 일반적인 .tar.gz(.tgz)파일보다 RPM패키지는 매우 뛰어난 기능을 가지고 있는 고차원적인 패키징 시스템이다.

1.1 rpm의 다섯가지 mode

■ 설치모드 : rpm -i 또는 rpm -U(업그레이드)

■ 제거모드 : rpm -e

■ 질의모드 : rpm -q

■ 검증모드 : rpm -V 또는 rpm -v

■ 패키지제작모드 : rpm -b

1.2 rpm 패키지 이름 구조

패키지 이름

-

버전

-

릴리즈

.

아키텍처

.

rpm

예) tcp_wrappers-7.6-10.i386.rpm
     tcp_wrappers : 패키지 이름
     7.6 : 버전
     10 : 릴리즈
     i386 : 아키텍처(intel 플랫폼의미)
    1.3 패키지 설치/업그레이드/제거

1.3 rpm패키지 명령어 형식

설치

 rpm -i [옵션] [패키지 파일 목록]

업그레이드

 rpm -U [옵션] [패키지 파일 목록]

질의

 rpm -q [옵션] [패키지 목록]

삭제

 rpm -e [패키지 이름]
 rpm -e [패키지 이름-버전]
 rpm -e [패키지 이름-버전-릴리즈]

검증

 rpm -V [옵션] [패키지 목록]
 rpm -y [옵션] [패키지 목록]


1.4. RPM 설치 / 업그레이드

1) 간단한 설치 명령

shell> rpm -i  proftpd-1.2.1-1kr.i686.rpm
shell>

2) -v 옵션

shell> rpm -i -v apache-1.3.12-2.i386.rpm
apache-1.3.12-2

shell>

3) -h, --hash옵션

shell> rpm -ivh apache-1.3.12-2.i386.rpm
apache        ###############################################
shell>

4) -Uvh

설치옵션에서 -i에 -v 옵션 하나, 그리고 진행상황을 행서 마크로 보여주는 -h옵션을 묶어 -ivh라는 복합옵션을 사용할 수 있다. 그러나, 많은 사용자들은 -ivh옵션 대신 -U옵션을 사용한다. 업그레이드 옵션 -U로 시스템에 설치된 패키지를 설치할 때는 업그레이드할 패키지가 없으므로 알아서 처음 설치 모드, 즉 -i모드로 설치하는 것과 바 없다. 구버전의 패키지가 있는경우 버전의 패키지를 지워주고 삭제와 설치를 동시에 해 주는 것이다.

아래의 예처럼 업그레이드 설치가 가능하며 중복 설치시엔  에러 메시지를 보내준다.

shell> rpm -Uvh apache-1.3.12-2.i386.rpm
apache     ##################################################
shell>

 

shell> rpm -Uvh apache-1.3.12-2.i386.rpm
package apache-1.3.12-2 is already installed
shell>

1.5 RPM 질의

아래와 같은 옵션으로 설치된 RPM패키지에 대한 정보를 알 수 있다.

1) 모든 설치 정보

shell> rpm -q -a 또는 rpm -qa
ElectricFence-2.1-1
setup-2.0.5-1
filesystem-1.3.5-1
basesystem-6.0-4
ldconfig-1.9.5-15

<생략 >

2) 패키지에 대한 질의

shell> rpm -q apache
apache-1.3.12-2
shell>

3) 일반정보 질의 -i

shell> rpm -qi apache
Name        : apache                       Relocations: (not relocateable)
Version     : 1.3.12                            Vendor: Red Hat, Inc.
Release     : 2                             Build Date: Thu 02 Mar 2000 03:37:55AM KST
Install date: Sat 17 Mar 2001 12:25:13 AM KST      Build Host: porky.devel.redhat.com
Group       : System Environment/Daemons    Source RPM: apache-1.3.12-2.src.rpm
Size        : 975071                           License: Freely distributable and usable
Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Summary     : The most widely used Web server on the Internet.
Description :Apache is a powerful, full-featured, efficient and freely-available Web server. Apache is also the most popular Web server on the Internet. Install the apache package if you need a Web server.
shell>

4) 설치파일목록 질의 -ㅣ

shell> rpm -ql apache
/etc/httpd/conf
/etc/httpd/conf/access.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
<중 략>
shell>

1.6 RPM 삭제

shell> rpm -e apache
shell>

1.7 RPM 검증

설치한 패키지의 파일이 처음 설치할 때와 검즈을 하는 현재 시점 사이에 어떤 변화가 있었는지 검증 할 수 있다.

검    증    문    자

 설     명

 5

 MD5 체크섬(파일의 내용이 원본과 같은가?

 S

 파일크기

 L

 심볼릭 링크

 T

 최신 갱신일시(MTime)

 D

 장치

 U

 사용자

 G

 그룹

 M

 모드(허가권과 파일 유형)

 

shell> rpm -V proftpd
S.5....T c /etc/proftpd/conf/proftpd.conf
shell>

크기(s), 파일의 내용(5), 최신 갱신 일시(T) 가 다름을 나타낸다. c는 configuration 파일을 의미한다.

 



1. vsFTP를 사용하는 경우

 

[root@localhost /]# vi /etc/vsftpd/vsftpd.conf

 

- 특정 계정 사용자만 제한하고 싶을 경우

 

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list       <= 여기에 제한하고 싶은 계정 아이디를 추가하면 된다.

 

[root@localhost /]# vi /etc/vsftpd/chroot_list 

 

 

- 전체 계정 사용자 모두 제한하고 싶을 경우

 

chroot_list_enable=YES
chroot_local_user=YES                            <= 이렇게 해주면 된다.
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

 

 

 

 

2. proFTP를 사용하는 경우

 

[root@localhost /]#vi /etc/proftpd.conf

 

- 전체 계정 사용자 모두 제한하고 싶을 경우

 

DefaultRoot             ~                              <= 이렇게 해주면 된다.

 

 

- 관리 계정 사용자의 경우 제한 풀고 싶은 경우

DefaultRoot             ~ !white                    <= white라는 관리 계정 아이디만 허용

 

'OS 운영체제 및 보안 > Linux' 카테고리의 다른 글

DNS 기본 보안 설정  (0) 2008.10.24
Linux 시스템 cpu,메모리 점검  (0) 2008.10.24
예제] Linux Master/Slave View설정  (0) 2008.10.24
Linux에서 JDK 설치  (0) 2008.10.24
RPM 사용법  (0) 2008.10.24
APM 모음팁  (0) 2008.10.24
하드 디스크 추가하기..  (0) 2008.10.24
리눅스보안 - 필수 보안 조치법  (0) 2008.10.24
해킹 방지 서버 점검  (0) 2008.10.24
crontab을 이용한 리눅스 서버 종료  (0) 2008.10.24

APM 모음팁

Posted 2008. 10. 24. 04:37


출처 : http://kldp.org/KoreanDoc/html/APM_tip-KLDP/

 

 

APM 팁 모음

김용일

nalabi@formail.org

$Date: 2002/11/22 05:31:05 $

 

홈페이지를 만들면서 그동안 조그마한 팁을 모아 놓은 것입니다.

 

고친 과정
고침 0.1 2002-11-16 고친이 김 용일
최초 작성

차례
1. 소개
1.1. 이글은
1.2. 덧글
1.3. 도와 주신분
1.4. 저작권
2. 설치
3. Apache
4. Html
5. Perl
5.1. 펄 사용하기 위한 apache, mysql 설정
5.2. 디렉토리, 화일 만들기
5.3. 시간 출력및 테이블 내용 출력
5.4. 이름을 입력받아 mysql에 저장하고 출력하기
5.5. 입력 받는 부분을 체크 하기
6. Php
6.1. 노프레임 만드는법
6.2. 이름을 입력받아 mysql에 저장하고 출력하기
6.3. 이름을 입력받아 체크하고 mysql에 저장하고 출력하기
6.4. 테이블 출력 프로그램
6.5. mysql_fetch_array 예제
6.6. 이미지 화일 출력
6.7. 달력 예제
6.8. 원하는 문자열 검색(ereg)
6.9. 인증 예제
6.10. 커널 버전 나타내주는 함수
6.11. 도메인 표시 함수
6.12. 문자열 체크 함수 예제(ereg)
6.13. ID체크 해주는 프로그램
6.14. 게시물 페이지 변경 예제
6.15. 정규표현식
6.16. 영어 단어 검색
6.17. IP 소속기관,회사 알아보기
6.18. 현재의 년/월/일 구하기
7. 자바스크립트
7.1. idcheck를 위한 예제
7.2. 메뉴 만들기 예제
8. Oracle
9. Mysql
9.1. mysql 주기적으로 백업하기
9.2. mysql 루트 패스워드를 잃어 버렸을 때
9.3. 데이타 타입 (테이블 생성시 컬럼의 데이타 타입입니다.)
9.4. 쉘에서 DB 내용 보기
9.5. Mysql에 들어가기
9.6. 데이타 백업 받기 (화일로 받음)
9.7. 데이타 입력하기 (화일--> Mysql)
9.8. 사용자 만들기
9.9. 테이블 만들기
9.10. 테이블 보기
9.11. 테이블 데이타 입력하기
9.12. 특정 필드만 입력
9.13. 테이블내용 보기
9.14. 필드 추가
9.15. 필드 삭제
9.16. 기타 alter 용법
9.17. 데이타 삭제
9.18. 데이타 수정
9.19. 내림 차순으로 정렬
9.20. 무작위 정렬
9.21. 년도순으로 정렬
9.22. 년도, 번호순으로 정렬
9.23. 20살 이상이 몇명인가를 찾는다.
9.24. null 값 검색하기
9.25. null 값 검색하기
9.26. 검색 하기
9.27. 범위 검색
9.28. in 검색
9.29. not in 검색
9.30. 날짜 검색하기
9.31. 테이블 내용을 화일로 만들기
9.32. 테이블 내용을 화일로 만들때 |로 구분하기
9.33. 화일을 불러오기
9.34. 사칙연산
9.35. 나이 계산하기
9.36. 유닉스 시간
9.37. 원격 DB 사용하기

 

 

하드 디스크 추가하기..

Posted 2008. 10. 24. 04:36


SCSI하드드시크 하나를 사용중 추가로 SCSI하드디스크하나를 더 장착하여 커널에 인식시킨후에 파일시스템을 만들고 만든 파일시스템을 포맷하여 마운트시킬 디렉토리를 만든다음 이 디렉토리에 생성된 파일시스템을 마운트시키는 작업. 그리고 이 작업이 끝난후에 부팅시 자동마운트되도록 /etc/fstab에 설정추가한다.

※ 같은 방법으로 IDE도 마찬가지입니다.

 

 

 1. 현재 사용중인 하드디스크 확인(추가전)

 

먼저, 현재 사용중인 하드디스크를 확인해 보도록 하자.

/etc/fstab이라는 파일은 리눅스부팅시에 자동으로 마운트시키기위한 "파일시스템테이블(file system table)"이다.

 

즉, 리눅스가 부팅이 되면서 이 파일을 참조하여 설정된 내용대로 마운트를 시켜 사용가능토록하는 것이다.

 

 

 

위의 /etc/fstab은 하드디스크가 추가되기전의 /etc/fstab 내용이다.

보시는 바와 같이 /dev/sda라는 하드디스크 하나만이 장착되어 있음을 짐작할 수 있다.

 

 

그리고, 아래와 같이 "df -k", "df -m"등로 현재 사용중인 파일시스템정보를 확인해본 것이다.

확인해 본 바와 같이 현재 사용중인 파일시스템은 sda의 하드디스크 하나를 몇 개의 파일시스템으로 나누어 사용중인 것을 확인할 수 있다.

 

좀더 확실히 확인키위해 mount라는 명령어로 현재 리눅스서버에 마운트된 파일시스템이 어떤 것들이 있는가를 정확히 확인해 본 것이다.

 

 

위에서 본 바와 같이 sda라는 하드디스크를 몇 개의 파일시스템으로 나누어서 사용중임을 확인할 수 있다.

 

위의 그림3개에서 확인된 내용을 추가 하드디스크를 장착하여 파일시스템을 만들고 마운트까지 마무리한후의 내용과 비교해 보기바란다.

 

 

 

 

 

2. 추가할 HDD를 HDD확장슬랏에 장착한다.

   일반적으로 핫스왓방식(hotswap)이 지원되는 시스템이라면,

   장착과 동시에 운영체제에서 인식이 바로된다.

   하지만, 여기서는 설명을 하기위해 핫스왓방식이 지원되지않은 경우로 가정하겠다.

 

   서버용도로 사용하는 거의 모든 HDD는 스카시(SCSI)방식일 것이다.

   정식으로 서비스하기위한 용도로 사용되는 서버라면 SCSI방식을 사용해야한다.

   물론, IDE방식도 가능하지만, 1년 365일 쉬지않고 돌아가는 서버의 안정성을 위해

   반드시 SCSI방식의 HDD를 사용토록 해야한다.

 


 

 

 

3. 새로운 HDD를 장착한 후에 서버를 재부팅한다.

   재부팅시에 메시지를 자세히 살펴보면 새로운 HDD에 관련된 메시지를 볼수가 있다.

 


 

4. 재부팅이 끝나고 나면 dmesg란 명령어를 사용하여 장착된 SCSI HDD의 정보를 확인한다.

   dmesg는 텍스트파일로 재부팅될때마다 새로 생성이 되며 위치는 /var/log/dmesg에 있다.

 

   명령어의 위치는 리눅스의 경우 대부분 /bin/dmesg이다.

 

   자, 다음과 같이 dmesg란 명령어를 입력하여 새로추가된 HDD의 SCSI ID를 확인토록한다.

   IDE라면 "dmesq"라고만 입력해서 찾아본다.ㅡㅡ;

   일반적인 두번째로 장착하는 IDE방식의 하드디스크라면 hdb로 잡혔을 것이다.

 



추가로 하드디스크를 장착하였기 때문에 sda외에 sdb라는 하드디스크를 커널이 인식하였음을 알 수 있다.

이제 이 sdb라는 추가 하드디스크를 사용키위해 파일시스템을 만들고 fdisk를 하여 파티션생성후에 마운트를 시켜 이 하드디스크를 사용하도록 할 것이다.

 

 

 


5. SCSI ID를 확인했다면 이제 fdisk를 실행시켜 파티션을 생성해 줘야한다.

 

위에서 확인한 추가 하드디스크의 SCSI ID는 /dev/sdb이다. (IDE의 경우 /dev/hdb)

따라서 이 SCSI ID를 사용키위해 먼저 fdisk로 파티션을 생성하여야한다.

아래예와 같이 fdisk라는 명령어를 이용하여 파티션생성작업을 하여보자.

 

 

 

파티션을 생성하기 위해서는 fdisk 실행후에 실린더번호를 정확히 입력하고

사용코자하는 용도대로 설정하면 된다.

 

참고 : fdisk 명령어

 

   a   toggle a bootable flag

   b   edit bsd disklabel

   c   toggle the dos compatibility flag

   d   delete a partition

   l   list known partition types

   m   print this menu

   n   add a new partition

   o   create a new empty DOS partition table

   p   print the partition table

   q   quit without saving changes

   s   create a new empty Sun disklabel

   t   change a partition's system id

   u   change display/entry units

   v   verify the partition table

   w   write table to disk and exit

   x   extra functionality (experts only)


  p라는 fdisk 명령어는 현재 파티션정보를 보고자함이다.

 

  만약 새로운 파일시스템을 생성하려면 아래의 예와 같이 n이라는 fdisk명령어를 이용하여 사용할 파티션번호를 입력하면 된다.


 

 

 

 

6. 작성된 파티션을 사용키위해 파일시스템을 생성(포멧)한다.

 

 

크게 두가지 포맷형식이 있는데 복구능력이 ext3방식을 추천한다.

ext2: mke2fs /dev/sdb

   or

ext3: mke2fs -j /dev/sdb

 

이제 생성된 파티션을 사용키위해 mke2fs라는 리눅스명령어를 사용하여 파일시스템을 생성한다.

"mke2fs 생성할 파일시스템명"으로 입력해주면 아래의 예와같이 파일시스템을 생성하여 준다.

  mke2fs라는 명령어의결과 생성되는 파일시스템결과에서 알 수 있는 내용은 다음과 같다.

  . Block size 크기
  . Fragment size 크기
  . inode의 수
  . 수퍼유저가 사용할 block의 수(전체 block의 5%를 차지함)
  . 첫 번째 데이터블럭
  . Block group의 수
  . 그룹당 블록수
  . 그룹당 fragment의 수
  . 그룹당 inode의 수
  

 물론 위의 정보들을 처음접하게 되는 분들이라면 뭐가뭔지 이해하지 못할 수도 있다.

 하지만, 파일시스템에 대한 정확한 이해를 하려면 위의 정보들이 어떤 의미를 가지고 무엇을 의미하는지는 정확히 알아야할 필요성은 있다.

물론, 단순히 하드디스크를 추가장착하는 것만이 목적이라면 위의 정보에 대한 의미를 구체적으로 몰라도 관계는 없다.

필자가 강조하고자 하는 것은 진정한 서버관리자, 즉 진정한 수퍼유저라고 한다면 이런 메시지뿐아니라 모니터에서 흐르는 모든 메시지들을 좀더 정확히 분석하고 이해하는 노력이 필요하다는 것이다.

 

 

7. 준비된 파티션을 마운트를 시키기 위해 디렉토리를 작성하고 마운트를 시킨다.

 

   mkdir /home2

 

   mount -t ext2 /dev/sdb /home2

 

   리눅스에서 사용하는 파일시스템은 ext2라는 파일시스템이며, 생성한 home2라는 디렉토리와

   물리적인 파티션인 /dev/sdb를 마운트시키면 이제부터는 기존에 있던 디렉토리처럼 마음대로 사용이

   가능하다.

 

 

 

8. 부팅시 자동마운트되게 하기위한 파일시스템테이블 수정

 

   지금까지 한 작업은 일시적으로 사용할수는 있지만, 부팅시마다 적용하기 위해서는

 

   부팅시 자동마운트되는 파일시스템테이블(/etc/fstab) 수정을 해야한다.


 

위의 예와 같이 작업된 후에는 시스템재부팅시에도 마운트할 필요없이 그대로 사용할수 있다.  

기존의 내용과  다른점은 맨 마지막줄에 /dev/sdb가 /home2에 마운트되게끔 설정이 추가되었다는 것이다.

 

9. 파일시스템 생성 최종확인

  이제 df -k로 파일시스템정보를 다시 확인한 것이다.

  추가작업하기 전의 내용과 달라진 부분을 확인해 보기바란다.

  즉, 맨 마지막 줄의 /dev/sdb라는 파일시스템이 생성되어 /home2라는 디렉토리에 마운트되어 있음을 볼 수 있다.  

  

  이제 마지막 확인을 하기위해 "mount"라는 명령어로 현재 마운트된 정보를 확인해본 것이다.

 

 

  추가하기전에는 보이지 않았던 /dev/sdb라는 파일시스템이 /home2에 마운트되어 있다는 것을 확인할 수 있을 것이다.

 

 

 

하드추가시에는 세가지 작업을 해주셔야 합니다.

* 파티션생성
* 파일시스템생성
* 마운트포인트생성

 

1. 서버에 하드 추가 후 OS 부팅시 하드가 올라오는지 확인한다.

2. vi /etc/fstab을 열어 ext2, ext3인지 판단..

3. fdisk로 파티션을 잡는다.
예)
3-1. fdisk /dev/hdb (IDE 하드인 경우), fdisk /dev/sdb (SCSI 하드인 경우)
3-2. p로 기존 파티션이 잡혀있는지 확인한다.
3-3. d로 기존 파티션이 잡혀있으면 삭제후 p로 확인한다.
3-4. n으로 파티션 추가- > p(primary로) -> 1 -> 크기지정 default 1 입력(Full로 잡을시, 디폴트가 Full) -> 엔터
3-5. w로 쓴다.

4. format
ext3 : mke2fs -j /dev/hdb
ext2 : mkfs -t ext2 /dev/hdb

5. 마운트할 디렉토리 생성
/에서 mkdir /home2 등등

6. mount
ext3 : mount -t ext3 /dev/hdb /home2
ext2 : mount -t ext2 /dev/hdb /home2

7. fstab 수정 (vi /etc/fstab)
예)
LABEL=/home /home ext3 defaults 1 2 (를 카피하여 페이스트 하여 아래와 같이 편집)
-> /dev/hdb /home2 ext3 defaults 1 2 (앞 두부분만 수정)

8. df -h로 마운트 확인

9. 재부팅후 이상없이 올라온후 마운트 되었는지 확인

« PREV : 1 : 2 : 3 : 4 : 5 : NEXT »