Posted on 2008/09/08 16:20
Filed Under [1] IT 관련/2. Linux

안녕하세요? 오랜만에 포스팅합니다.

리눅스를 사용하다보면 Rsync를 통하여 파일을 전송하는 등의 일들이 잦아지곤 합니다.

제가 많이 쓰는 명령어들중 아래의 명령어가 있을 수 있겠네요.

사용자 계정들을 한번에 옮기고 난 뒤에 옮겨간 서버에서 존재하는 루트 파일들때문에
골머리를 아파야 한답니다. 이때 쉽게 할 수 있는 명령어가 find 입니다.

저는 아래와 같이 사용을 한답니다.

find /home -type f -user root -not -name .bash_profile -not -name .htaccess -name ".*" -exec rm -rf {} \;

여러분들은 어떻게 사용하는지 궁금하네요 ^^;
2008/09/08 16:20 2008/09/08 16:20

Posted on 2008/09/08 15:26
Filed Under [1] IT 관련/4. Programming

숫자 세자리마다 콤마를 표현하는 방법에 대해 알아보겠습니다.

:: ASP Script 에서 표현할 경우
     response.write(formatnumber( value, 0, -1 ))

:: PHP Script 에서 표현할 경우
     echo number_format($value);

:: Perl Script 에서 표현할 경우
     print cm($value);
    sub cm { 
          my $num = shift;
          my ($n) = $num =~ /(\d+)/;
          1 while $n =~ s/(\d+)(\d{3})/$1,$2/;
          $num =~ s/(\d+)/$n/;
          $num; 
     } 

:: JSP 에서 표현할 경우 
     new DecimalFormat("###,###,###,###,###").format(value);
     보통은 Bean으로 만들어서 표현을 합니다. 

:: MS-SQL Query에 의해 표현할 경우
     SELECT 
    REPLACE(CONVERT(VARCHAR,CONVERT(MONEY,1234567890),1),'.00','')
     결과값          
     1,234,567,890
     (1개 행 적용됨)

출처 : http://ihelpers.co.kr
2008/09/08 15:26 2008/09/08 15:26
TAG : , , ,

Posted on 2008/09/08 13:11
Filed Under [1] IT 관련/2. Linux

오늘은 네임서버에 대하여 알아보도록 하겠습니다.

1. 네임서버의 작동은 53번 포트를 이용하여 쿼리를 주고 받는 역활을 합니다.
방화벽이나 혹은 iptable에서 53번을 막고 동작이 않된다고 하시는 분들이 계시는데
그런 실수가 없으시기 바랍니다.

2. 네임서버를 만들기 위해서는 우선 네임서버의 도메인을 호스트로 등록해야 합니다.
필자가 사용할 도메인은 가비아를 통해서 등록하였다. (http://domain.gabia.com)
호스트 등록을 위해서는 고정 IP가 꼭 필요하므로 고정 IP를 확인하도록 한다.

3. 네임서버를 운영하기 위해서는 Bind가 설치되어 있어야 한다. 혹시 설치가 되어 있지 않은 경우
Bind는 ISC(http://www.isc.org)에서 받아 설치를 하자. RPM은 레드햇(http://www.redhat.com)
이나 리눅스 설치 시디롬에서 RPM을 설치하면 된다.

사용할 도메인 : jaehun.org
사용할 고정아이피 : 211.189.69.36

이곳 쥔장의 서버 IP는 미리내 웹호스팅업체의 사장님과의 친분으로 제공되는 회선이다.

네임서버의 구축의 위해서 새로 작성하거나 수정할 파일들은 다음과 같다.

/etc/named.conf [수정]
/var/named/named.zone [새로작성]
/var/named/named.rev [새로작성]

# vi /etc/named.conf

// generated by named-bootconf.pl
options {
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};

//
// a caching only nameserver config
//

controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};

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

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 "69.189.211.in-addr.arpa" IN { <---새로추가입력부분 시작
type master;
file "named.rev";
allow-update { none; };
};

zone "jaehun.org" IN {
type master;
file "named.zone";
allow-update { none; };
}; <---새로추가입력부분 끝


아랫부분의 두행이 새로 추가한 부분이다.

주의할 점은 'zone "69.189.211.in-addr.arpa" IN {

P를 뒤로 적은 것이라는 것을 명심해야 한다. 원래 IP는 '211.189.69.36'이다.
맨 마지막의 IP는 적지 않는다.

여기서는 jaehun.org 도메인에 대한 네임서버설정을 하는 것이다.

# vi /var/named/named.rev

$TTL 86400
@ IN SOA ns.jaehun.org. park.jaehun.org. (
200703060101 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum

IN NS ns.jaehun.org.

36 IN PTR localhost.

이 파일은 새로생성을 해야하는 파일이다. 위와 같이 작성을 하면 된다.
여기서 네임서버로 사용할 도메인의 호스트를 적어주고 IP의 마지막 부분만 정확하게 적어주면 된다.

# vi /var/named/named.zone

$TTL 86400
@ IN SOA ns.jaehun.org. park.jaehun.org. (
200703060101 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum

  IN NS ns.jaehun.org.
  IN MX 10 mail.jaehun.org.
  IN A 211.189.69.36
ns   IN 218.50.55.55
mail IN 218.50.55.55
www IN 211.189.69.36
* IN 211.189.69.36
named.zone과 윗부분은 같다.

여기서는 jaehun.org의 서버의 IP는 211.189.69.36이라고 정했고
jaehun.org의 도메인의 IP는 211.189.69.36이라고 정했다.

주의) 도메인뒤에는 항상 '.'을 찍어야 한다는 것이다.

여기까지 네임서버의 운영을 위한 모든 준비가 끝이 났다.

네임서버 메몬을 다시 띄우면 네임서버는 작동한다.

#named -u named

4. 네임서버가 제대로 동작하는지 확인하는 방법은 nslookup가 있다.
우선 nslookup를 사용하기 위해서 '/etc/resolv.conf'의 네임서버의 IP를 변경하자.

#nslookup jaehun.org

Note: nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead. Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
Server: 168.126.63.2
Address: 168.126.63.2#53

Name: jaehun.org
Address: 218.50.55.55

이상과 같이 출력된다면 정상적으로 작동하는 것이다.

마지막으로 한가지만 더 알아보자.

hostname가 정상적이지 않다면
sysctl -a | grep hostname
여기서 적용이 되어야 합니다.

sysctl -w 'kernel.hostname=jaehun.org'


위의 설정파일들을 만들때 vim등을 사용하지 않고 윈도우용 edit프로그램으로 사용하면
낭패를 볼 수 있다. 주의하자. vim을 반드시 사용하자.

그리고 작동시키고 나서 오류가 발생하여 정상적으로 돌아가지 않는다면
message파일을 살펴보고 오류를 잡아나가는게 수순이겠다. 끝.
2008/09/08 13:11 2008/09/08 13:11

Posted on 2008/09/08 13:07
Filed Under [1] IT 관련/2. Linux

Qmail 설치하기
=====================================================================================
1. 필요한 파일(http://kldp.org/~eunjea/qmail_src/)
http://cr.yp.to/software/qmail-1.03.tar.gz
http://smarden.org/pape/djb/manpages/u ··· n.tar.gz
http://smarden.org/pape/djb/manpages/d ··· n.tar.gz
http://www.inter7.com/vpopmail/vpopmail-5.2.1.tar.gz
http://www.inter7.com/qmailadmin/qmail ··· 6.tar.gz
http://www.inter7.com/devel/autorespond-2.0.2.tar.gz
http://www.inter7.com/vqadmin/vqadmin-2.3.2.tar.gz
http://gd.tuwien.ac.at/infosys/mail/qm ··· 3.tar.gz
http://gd.tuwien.ac.at/infosys/mail/qm ··· 0.tar.gz
http://members.elysium.pl/brush/qmail- ··· 1.tar.gz
http://www.ckdhr.com/ckd/qmail-103.patch
패치파일(http://kldp.org/~eunjea/qmail/patch/)
# 소스를 다운받아서 /var/qmail/src 라는 곳에 복사해둔다.
=====================================================================================
2. qmail 설치
# smtp 패치
$ tar xzf qmail-1.03.tar.gz
$ tar xzf qmail-smtpd-auth-0.31.tar.gz
$ cd qmail-smtpd-auth-0.31
$ cp README.auth base64.c base64.h ../qmail-1.03
$ patch -d ../qmail-1.03 < auth.patch

# dns 패치
$ cd qmail-1.03
$ patch -p1 < ../qmail-103.patch
$ mkdir /var/qmail

# INSTALL.ids 편집(리눅스용)
-----------------------------------------------
groupadd nofiles
useradd -g nofiles -d /var/qmail/alias alias
useradd -g nofiles -d /var/qmail qmaild
useradd -g nofiles -d /var/qmail qmaill
useradd -g nofiles -d /var/qmail qmailp
groupadd qmail
useradd -g qmail -d /var/qmail qmailq
useradd -g qmail -d /var/qmail qmailr
useradd -g qmail -d /var/qmail qmails
-----------------------------------------------
$ sh INSTALL.ids
$ make
$ make setup check
$ ./config
$ ./config-fast mail.chungnambiz.net
# 결과 : /var/qmail/control 설정화일이 생김
# 오류 : 서버의 DNS 설정(MX 레코드)에 문제
# 해결 : 두번째의 경우처럼 한다.
# 오류 : RedHat 9.0일경우 errno 에러
# 해결 : error.h 소스에 #include 추가
=====================================================================================
3. ucspi-tcp 설치
$ tar xzf ucspi-tcp-0.88.tar.gz
$ cd ucspi-tcp-0.88
$ make
$ make setup check
# 오류 : install: fatal: unable to write .../bin/tcpserver: text busy
# 원인 : qmail 을 다시 깔 경우
# 해결 : rmdir /service, /etc/rc.d/init.d/qmail stop
# 오류 : RedHat 9.0일경우 errno 에러
# 해결 : error.h 소스에 #include 추가
=====================================================================================
4. daemontools 설치
$ mkdir -p /package
$ chmod 755 /package
$ cp daemontools-0.76.tar.gz /package
$ cd /package
$ tar xzf daemontools-0.76.tar.gz
$ rm daemontools-0.76.tar.gz
$ cd admin/daemontools-0.76
$ package/install
# 오류 : RedHat 9.0일경우 errno 에러
# 해결 : error.h 소스에 #include 추가
=====================================================================================
5. autorespond 설치
$ tar xzf autorespond-2.0.2.tar.gz
$ cd autorespond-2.0.2
$ make
$ cp autorespond /usr/local/bin/
# 오류 : tai64nlocal.c 두번째 줄 #include => #include 수정
=====================================================================================
6. 스크립트 파일 생성
# /var/qmail/rc 생성
-----------------------------------------
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/
-----------------------------------------
$ chmod a+x /var/qmail/rc

$ mkdir -p /var/qmail/supervise/qmail-send/log
$ mkdir -p /var/qmail/supervise/qmail-smtpd/log
$ chmod +t /var/qmail/supervise/qmail-send
$ chmod +t /var/qmail/supervise/qmail-smtpd

# /var/qmail/supervise/qmail-send/run 생성
----------------------------------------------
#!/bin/sh
exec /var/qmail/rc
----------------------------------------------

# /var/qmail/supervise/qmail-send/log/run 생성
----------------------------------------------
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t /var/log/qmail
----------------------------------------------

# /var/qmail/supervise/qmail-smtpd/run 생성
--------------------------------------------------------------
#!/bin/sh
Q_UID=`id -u vpopmail`
Q_GID=`id -g vpopmail`
exec /usr/local/bin/softlimit -m 7340032 \
/usr/local/bin/tcpserver -vRHl 0 \
-x /home/vpopmail/etc/tcp.smtp.cdb \
-u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd chungnambiz.net \
/home/vpopmail/bin/vchkpw /bin/true 2>&1
---------------------------------------------------------------
# 주의 : vRHl 0 (L의 소문자, 숫자 0), 인용문자가‘(작은따옴표)가 이나고 `(숫자1옆에 있는 것) 이다.

# /var/qmail/supervise/qmail-smtpd/log/run 생성
--------------------------------------------------------------
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t /var/log/qmail/smtpd
--------------------------------------------------------------

$ chmod 755 /var/qmail/supervise/qmail-send/run
$ chmod 755 /var/qmail/supervise/qmail-send/log/run
$ chmod 755 /var/qmail/supervise/qmail-smtpd/run
$ chmod 755 /var/qmail/supervise/qmail-smtpd/log/run

$ mkdir -p /var/log/qmail/smtpd
$ chown qmaill /var/log/qmail /var/log/qmail/smtpd
=====================================================================================
7. 기본 alias 계정
$ echo postmaster > /var/qmail/alias/.qmail-root
$ echo postmaster > /var/qmail/alias/.qmail-postmaster
$ echo postmaster > /var/qmail/alias/.qmail-mailer-daemon
$ cd /var/qmail/alias/
$ chmod 644 .qmail-root .qmail-postmaster .qmail-mailer-daemon
=====================================================================================
8. qmail 시동 파일
# http://kldp.org/~eunjea/qmail-startup.txt 다운로드 후
# /etc/rc.d/init.d/qmail 저장후 실행퍼미션을 준다(chmod 755 qmail)
# 리부팅시 qmail 데몬이 실행되도록 ntsysv에서 체크해 준다.

$ chkconfig --add qmail
$ ntsysv

# 예외 : Turbo 리눅스는 ntsysv => turboservice
# 예외 : 체크 안해도 자동실행 된다고 함
=====================================================================================
9. vpopmail 설치
# 유저, 그룹 추가
$ groupadd vchkpw
$ useradd -g vchkpw vpopmail
$ useradd -g vchkpw -d /원하는/파티션의/디렉토리를/지정 vpopmail

$ tar xzf vpopmail-5.2.1.tar.gz
$ cd vpopmail-5.2.1

# vmysql.h를 수정 : Mysql 접속아이디와 패스워드를 넣어준다(root 것을 넣어준다).

$ ./configure --enable-default-domain=chungnambiz.net \
--enable-mysql=y \
--enable-incdir=/usr/lib/mysql \
--enable-roaming-users=y \
--enable-tcprules-prog=/usr/local/bin/tcprules \
--enable-relay-clear-minutes=15
$ make
$ make install-strip
# 결과 : /home/vpopmail 에 bin, doc, domains 등등의 디렉토리와 파일 생성

# /home/vpopmail/etc/tcp.smtp 생성
-------------------------------------
127.0.0.:allow,RELAYCLIENT=""
211.245.175.:allow,RELAYCLIENT=""
:allow
-------------------------------------
$ tcprules /home/vp가
$ groupadd vchkpw
$ useradd -g vchkpw vpopmail
$ useradd -g vchkpw -d /원하는/파티션의/디렉토리를/지정 vpopmail

$ tar xzf vpopmail-5.2.1.tar.gz
$ cd vpopmail-5.2.1

# vmysql.h를 수정 : Mysql 접속아이디와 패스워드를 넣어준다(root 것을 넣어준다).

$ ./configure --enable-default-domain=chungnambiz.net \
--enable-mysql=y \
--enable-incdir=/usr/lib/mysql \
--enable-roaming-users=y \
--enable-tcprules-prog=/usr/local/bin/tcprules \
--enable-relay-clear-minutes=15
$ make
$ make install-strip
# 결과 : /home/vpopmail 에 bin, doc, domains 등등의 디렉토리와 파일 생성

# /home/vpopmail/etc/tcp.smtp 생성
-------------------------------------
127.0.0.:allow,RELAYCLIENT=""
218.50.55.55.:allow,RELAYCLIENT=""
:allow
-------------------------------------
$ tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp
$ /home/vpopmail/bin/clearopensmtp
$ crontab -e
--------------------------------------------
40 * * * * /home/vpopmail/bin/clearopensmtp
--------------------------------------------

$ mkdir /var/qmail/supervise/vpop

# /var/qmail/supervise/vpop/run 생성
------------------------------------------------------------------------
#!/bin/sh
VPOP_UID=`id -u vpopmail`
VPOP_GID=`id -g vpopmail`

exec /usr/local/bin/softlimit -m 7340032 \
tcpserver -vRHl 0 -u $VPOP_UID -g $VPOP_GID 0 110 \
/var/qmail/bin/qmail-popup chungnambiz.net \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
------------------------------------------------------------------------
* 주의 : 인용문자가‘(작은따옴표)가 이나고 `(숫자1옆에 있는 것) 이다.

$ chmod 755 /var/qmail/supervise/vpop/run
$ ln -s /var/qmail/supervise/vpop /service

$ /etc/rc.d/init.d/sendmail stop
$ mv /usr/lib/sendmail /usr/lib/sendmail.old
$ mv /usr/sbin/sendmail /usr/sbin/sendmail.old
$ ln -s /var/qmail/bin/sendmail /usr/lib
$ ln -s /var/qmail/bin/sendmail /usr/sbin

$ ln -s /var/qmail/supervise/qmail-send /service/
$ ln -s /var/qmail/supervise/qmail-smtpd /service/
=====================================================================================
10. ezmlm 설치
$ tar xzf ezmlm-0.53.tar.gz
$ tar xzf ezmlm-idx-0.40.tar.gz
$ mv -f ezmlm-idx-0.40/* ezmlm-0.53/
$ cd ezmlm-0.53
$ patch < idx.patch
$ make
$ make man
$ make setup

# 결과 : /usr/local/bin/ezmlm/ 설치됨
# 오류 : RedHat 9.0일경우 errno 에러
# 해결 : error.h 소스에 #include 추가
=====================================================================================
11. qmailadmin 설치(웹에서 이메일 관리)
$ tar xzf qmailadmin-1.0.6.tar.gz
$ cd qmailadmin-1.0.6

$ ./configure --enable-cgibindir=/www/cgi-bin --enable-htmldir=/www/html
$ make
$ make install-strip

# 브라우저 주소 : http://ip주소/cgi-bin/qmailadmin
=====================================================================================
12. vqadmin 설치(웹에서 가상도메인 관리)
$ tar zxf vqadmin-2.3.2.tar.gz
$ cd vqadmin-2.3.2
$ ./configure --enable-cgibindir=/www/cgi-bin
$ make
$ make install-strip

$ cd /etc/httpd/conf
# httpd.conf 에 추가
----------------------------------------------------

deny from all
Options ExecCGI
AllowOverride AuthConfig
Order deny,allow

----------------------------------------------------
$ cd /www/cgi-bin/vqadmin
# .htaccess 생성
----------------------------------------------------
AuthType Basic
AuthUserFile /etc/httpd/conf/vqadmin.passwd
AuthName vQadmin
require valid-user
satisfy any
----------------------------------------------------
# vqadmin.acl 수정
----------------------------------------------------
계정이름 VIMUCADX 계정이름 추가
예) root VIMUCADX root
----------------------------------------------------
$ chown nobody .htaccess (x)
$ chmod 600 .htaccess (x)
$ /usr/bin/htpasswd -bc /etc/httpd/conf/vqadmin.passwd 아이디 패스워드
$ /etc/rc.d/init.d/httpd stop
$ /etc/rc.d/init.d/httpd start

# 브라우저 주소 : http://ip주소/cgi-bin/vqadmin/vqadmin.cgi
# 들어가지 못할경우 /etc/httpd/conf/vqadmin.passwd 704 로 모드 변경
=====================================================================================
13. Outlook Express 설정
#. 도구 클릭
#. 계정 클릭
#. 오른쪽 위 추가 클릭, 메일 클릭
#. 표시이름에 이름 입력후 다음 클릭
#. 이메일 입력후 다음 클릭
#. 받는 메일에 mail.도메인명 (예: mail.jaehun.org)
#. 보내는 메일에 mail.도메인명 (예: mail.jaehun.org)
#. 입력후 다음 클릭
#. 계정이름에 아이디@도메인명 (예: park@jaehun.org)
#. 암호 입력 후 다음 클릭
#. 마침 클릭
#. 닫기 클릭
#. 배달 클릭
=====================================================================================
2008/09/08 13:07 2008/09/08 13:07

Posted on 2008/09/08 13:04
Filed Under [1] IT 관련/6. ETC

핑을 써보면 핑을 쏜 서버의 운영체제를 알수 있습니다.

윈도우 계열
# ping 192.168.1.34
PING 192.168.1.34 (192.168.1.34): 56 data bytes
64 bytes from 192.168.1.34: icmp_seq=0 ttl=128 time=1.418 ms
64 bytes from 192.168.1.34: icmp_seq=1 ttl=128 time=0.814 ms
64 bytes from 192.168.1.34: icmp_seq=2 ttl=128 time=0.802 ms
64 bytes from 192.168.1.34: icmp_seq=3 ttl=128 time=0.810 ms
64 bytes from 192.168.1.34: icmp_seq=4 ttl=128 time=0.809 ms
64 bytes from 192.168.1.34: icmp_seq=5 ttl=128 time=0.807 ms
--- 192.168.1.34 ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max/std-dev = 0.802/0.910/1.418/0.227 ms

유닉스 계열
# ping 192.168.1.32
PING 192.168.1.32 (192.168.1.32): 56 data bytes
64 bytes from 192.168.1.32: icmp_seq=0 ttl=255 time=1.649 ms
64 bytes from 192.168.1.32: icmp_seq=1 ttl=255 time=0.657 ms
64 bytes from 192.168.1.32: icmp_seq=2 ttl=255 time=0.632 ms
64 bytes from 192.168.1.32: icmp_seq=3 ttl=255 time=0.635 ms
64 bytes from 192.168.1.32: icmp_seq=4 ttl=255 time=0.627 ms
64 bytes from 192.168.1.32: icmp_seq=5 ttl=255 time=0.634 ms
--- 192.168.1.32 ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max/std-dev = 0.627/0.805/1.649/0.378 ms
#

제가 핑을 쏘아 봤습니다.
34번의 경우는 윈도우 계열의 서버
32번은 리눅스 서버입니다.

어떻게 구별 할 수 있냐하면 ... 바로 TTL (Time To Live)

ttl 값이 255 는 유닉스 계열
ttl 값이 128 은 윈도우 계열입니다.
ttl값은 라우터를 하나 지날때 마다 1씩 감소 합니다.
그러므로 ttl값이 100번때이면 윈도우 계열
ttl값이 200번때면 유닉스 계열 이겠지요!
그럼 다음 서버에 한번 핑을 쏘야 봅시다.

다음
# ping www.daum.net
PING www.daum.net (211.233.28.115): 56 data bytes
64 bytes from 211.233.28.115: icmp_seq=0 ttl=247 time=24.399 ms
64 bytes from 211.233.28.115: icmp_seq=1 ttl=247 time=24.827 ms
64 bytes from 211.233.28.115: icmp_seq=2 ttl=247 time=28.171 ms
64 bytes from 211.233.28.115: icmp_seq=3 ttl=247 time=14.305 ms
--- www.daum.net ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/std-dev = 14.305/22.925/28.171/5.189 ms

ttl값이 247인것 으로 보아 유닉스 계열 이겠지요!
아마 프리비나 리눅스를 쓰는 것 같군요!
2008/09/08 13:04 2008/09/08 13:04
TAG : , ,

Posted on 2008/09/08 13:02
Filed Under [1] IT 관련/2. Linux

* 시나리오
- 웹호스팅을 이용하고 있습니다 (홈 디렉토리만 이용 가능한 조건이죠)
- 매일 홈디렉토리를 백업하고 싶습니다.
- 매일 tar로 백업하다보니 tar가 중복 백업됩니다.
- 그래서 이미 백업된 tar 파일은 빼고 나머지 순수한 홈페이지 파일들만 백업하고 싶을 때
  사용하면 좋습니다.
- 20050214와 같은 포맷을 얻기 위한 date 명령은 Shell 마다 조금씩 다릅니다.

---------------------------------< cut here >-----------------------------
#!/bin/sh
today=`date +%F` # BASH(Linux)
# today=`date +20"%y%m%d"` # C-Shell(AIX외)
find . -type f ! -name "*.tar" -print > ./flist
tar -cvpf $today-homepage.tar -L ./flist
---------------------------------< cut here >------------------------------

2008/09/08 13:02 2008/09/08 13:02

Posted on 2008/09/08 13:01
Filed Under [1] IT 관련/2. Linux

리눅스를 사용하다보면 가장 큰 용량을 찾아서 정리해야 할 경우 아래와 같이 하면
쉽게 구별해 낼 수 있습니다.

* 디렉토리에서 가장 큰 용량 찾기
du -x --exclude=/home | sort -g | tail -n 5

* 파일내에 특정단어 한번에 변경하기
perl -pi -e 's/home/home2/g' *
해설 : home이라는 단어가 있으면 home2로 변경하라는 뜻
2008/09/08 13:01 2008/09/08 13:01

Posted on 2008/09/08 12:57
Filed Under [1] IT 관련/2. Linux

리눅스 쉘상에서 특정파일이나 디렉토리를 찾는것을 알아보자!
의외로 간단하다.

공통된 문법(?)의 시작은
---------------------------------------
find [경로] -name [파일] -print
---------------------------------------

-----------------------------------------------------------------
옵션 기능
-----------------------------------------------------------------
- atime N n일 전에 액세스(access)된 파일을 찾습니다.
- mtime N n일 전에 수정(modify)된 파일을 찾습니다.
- newer USR file보다 늦게 수정된 파일을 찾습니다.
- size n n*512 바이트 길이를 가지는 파일을 찾습니다.
- name WORD 파일 이름으로 검색합니다. 이름에는 메타 문자(*, ?, [])를
  사용할 수 있습니다.
- perm MODE 퍼미션으로 검색합니다. (-perm +2000)
- type LETTER 파일형식으로 검색합니다. f는 보통 파일, d는 디렉토리
  파일을 의미합니다.
- user USR 사용자 이름이 usr인 파일을 찾습니다.
- nouser 파일 소유자 이름이 등록되어 있지 않은 파일을 찾습니다.
- nogrp 파일 소유 그룹 이름이 등록되어 있지 않은 파일을 찾습니다.
- exec CMD 명령(CMD)을 실행합니다. 명령행의 끝은 반드시 \; 로
  닫아 주어야 합니다. 현재 찾은 파일이름의 배열을 {}로 입력으로 사용할 수 있습니다.
  아래 명령은 확장자가 bak인 모든 파일을 찾아 삭제합니다.
   find ./ -name '*.bak' -exec rm -f {} \;
- ok CMD 명령을 실행하기 전에 사용자 입력을 기다립니다.
- print 표준출력(stdout)으로 출력합니다. 기본설정입니다.
- ptint0 -print와 같이 동작하지만 출력의 끝에 개행문자를 붙이지 않습니다.
- fprint FILE -print와 같이 동작하면서 출력을 지정한 파일로 보냅니다.
- printf FORM c 스타일의 포맷을 사용하여 출력합니다.
   man 3 printf
- ls ls -dils 형식으로 파일 정보를 자세히 출력합니다.
- fls -ls 와 같이 동작하면서 출력을 지정한 파일로 보냅니다.

-----------------------------------------------------------------
약간의 설명을 붙이자면 경로는 절대경로와 상대경로모두 사용할 수 있다.
그럼 아래 설명을 보자

* 현재 디렉토리에서 특정파일찾기
find . -name rsync -print
현재 디렉토리에서 rsync파일이름을 출력하라!.만약 없다면 아무것도 출력하지 않는다.
위에서 "."이 부분을 잘보자

* 홈 디렉토리 안에있는 파일찾기
find ~/ -name README -print
현재 자신의 홈 디렉토리와 그 하위모든디렉토리를 대상으로 README파일을 찾아서
그 결과를 보여준다.

* 현재 디렉토리에서 여러파일 찾기
find . -name '*.conf' -print
현재 디렉토리에서 .conf로 끝나는 파일을 파일을 찾아준다.

* 디렉토리 찾기
find /usr/local -name gnu -type d -print
/usr/local 디렉토리를 기준으로 그 하위 디렉토리인 gnu디렉토리를 찾는다
2008/09/08 12:57 2008/09/08 12:57

Posted on 2008/09/08 12:04
Filed Under [1] IT 관련/2. Linux

root@moon root]# mysqladmin variables -p
Enter password:

접속을 하게되면
+---------------------------------+
| Variable_name | Value
+---------------------------------+--------------------------------------------+
| back_log | 50 | basedir | / | binlog_cache_size | 32768 | bulk_insert_buffer_size |
| 8388608 | character_set | euc_kr 등등

여러 값이 나타납니다.

이 부분에서 | max_connect_errors 값을 수백만.. 수천만으로 수정해주시면 되겠습니다.

###########
수정방법.
###########

/etc/my.cnf 파일에 들어가시면 상단부분에
============================수정해야 할 부분==============
set-variable = safe_show_database=ON
set-variable = key_buffer=128M
set-variable = max_allowed_packet=1M
set-variable = table_cache=256
set-variable = sort_buffer=2M
set-variable = record_buffer=2M
set-variable = myisam_sort_buffer_size=64M
set-variable = thread_cache=8
set-variable = max_connect_errors=1845829 <===이곳에 추가를 하였습니다.
# Try number of CPU's*2 for thread_concurrency
set-variable = thread_concurrency=8
#log-bin
server-id = 1
=========================================================
이부분에 추가를 해주시면 max_connect_errors 값이 수정됩니다.
2008/09/08 12:04 2008/09/08 12:04

Posted on 2008/09/08 12:03
Filed Under [1] IT 관련/2. Linux

Domain Registra 를 이전한 후 이상하게 네임서버 Lookup 이 실패하거나 Lookup 이 꽤 느려지는 등의 현상이 있어서 분석하던 중 다음과 같은 문제를 찾아냈습니다.

보통 도메인 등록을 할 때
ns1.domain.com 111.111.111.111
ns2.domain.com 222.222.222.222

이렇게 잡아주는데, 경우에 따라 2차 네임서버는 잡지 않거나 Registra 에서 제공하는 기본 서버를 잡아줍니다. 요즘은 어떤지 모르겠지만, 제가 도메인을 종종 등록하던 당시에는 2차 네임서버를 기본으로 요구했습니다.

보통의 경우 ns1 과 ns2 가 순차적으로 레코드에 삽입되게 되나, 어떠한 (Registra 의 문제로 추정되는)
문제 등에 의해 이 순서가 바뀌는 경우도 있습니다. 분명 whois 검색에서는 NS의 순서가 올바르게 출력이
되는데, 내부적으로 검색에서는 거꾸로 되는 경우가 가끔 있습니다.

이러한 경우 우선적인 질의를 ns2 쪽 레코드에 하게 되는데, 이 ns2에 해당하는 DNS 서버가 자신의 실제
레코드를 담지 않은 DNS 서버이거나 존재하지 않는 DNS일 경우, Lookup 은 Timeout 을 기다리거나 TLD
간을 루핑하며 시간을 소모하게 됩니다.  이는 다음과 같은 명령으로 확인해볼 수 있습니다.

#dig @kns.kornet.net www.domain.com +trace

이 trace 에서 NS의 순서가 어떻게 되는지를 눈여겨 보시면 됩니다.

대체로, 2차 네임서버에 실질적인 자신의 레코드가 없는 경우 Lookup 은 늦어지며, 2차 네임서버가 존재
하지 않는 서버인 경우 경우에 따라 Lookup 이 가끔 Fail 로 나타납니다. 다른 도메인들에 비해 이상하게
nslookup 등에서 반응이 늦거나 fail 이 자주 발생한다면 이 부분의 문제를 한번쯤 의심해보셔도 좋을 듯
합니다.

해결방법은
1. 2차 네임서버에 대한 정보가 잘못된 경우라면 수정해주면 됩니다.
2. 2차 네임서버가 Registra 의 것으로 잡혀있는 경우나 존재하지 않는 경우라면, 아예 레코드를 삭제해
버리면 훨씬 빨라집니다.
2008/09/08 12:03 2008/09/08 12:03

About

by Jaehun

Counter

· Total
: 51563
· Today
: 85
· Yesterday
: 106