반응형

# vi /etc/ld.so.conf 를 열고...

사용하고자하는 라이브러리 패스를 넣는다...귀찮으면 절대 패스!!!!!!!!!

저장하시고...

#ldconfig -d   (기억이 맞나 가물가물 --help로 보시면, 캐쉬잡힌거 보여줍니다)

반응형
반응형

-- 기존 qmail-remote를 qmail-remote-org로 이름변경
$  mv /var/qmail/bin/qmail-remote /var/qmail/bin/qmail-remote-org

-- qmail-remote perl script파일을 다음과 같이 만들자.
$ vi /var/qmail/bin/qmail-remote
/** --------------------------------------------------------------------------------- **/
#!/usr/bin/perl

# 스탠다드 입력으로 메일 내용을 읽어들인다.
undef $/;
$inputdata = <STDIN>;
$/ = "\n";
$inputdata =~ /Subject: (.*)/;
$subject = $1;
$inputdata =~ /Received: from.*\(([0-9.]+)\)/;
$ip = $1;

# 시간을 구한다.
$now_string = localtime;

# 로그를 기록한다.
open FH, ">>/var/log/qmail-remote.log";
flock(FH,2);
print FH "\n===================================================================";
print FH "\nARGV[0]:$ARGV[0]\nARGV[1]:$ARGV[1]\nARGV[2]:$ARGV[2]";
print FH "\n$now_string\nIP:$ip\nTo:$ARGV[2]\nFrom:$ARGV[1]\nSubject:$subject\n";
close FH;

# 특정 제목이면 보내지도 않고 보냈다고 에러코드를 리턴하고 종료한다.
if ($subject =~ /^\s*(광고|대출|뽈노)\s*\s+/i) { #광고성 제목의 메일 pass
    exit 1;
}

if ($ARGV[1]=~ m/root@windows.or.kr/) {
    exit 1;
}
if ($ARGV[1]=~ m/postmaster@windows.or.kr/) {
    exit 1;
}
if ($ARGV[1]=~ m/anonymous@windows.or.kr/) {
    exit 1;
}


if ($ARGV[2]=~ m/anonymous@windows.or.kr/) {
    exit 1;
}
if ($ARGV[2]=~ m/root@windows.or.kr/) {
    exit 1;
}
if($ip =~ m/Cron/)      {    # 크론이 메일을 발송하는 경우 Cron으로 시작하는 ip값을 가지는 것도 있으니 추가
    exit 1;
}

#if($ARGV[1] =~ /\s*(?:root|postmaster|anonymous|)\s*/i)
#{
#exit 1;
#}
#if($ARGV[2] =~ /\s*(?:root|postmaster|anonymous|)\s*/i)
#{
#exit 1;
#}

# 원래 qmail-remote 프로그램을 실행시킨다.
open (MAIL, "| /var/qmail/bin/qmail-remote-org $ARGV[0] $ARGV[1] $ARGV[2]");
print {MAIL} $inputdata;
close MAIL;
/** --------------------------------------------------------------------------------- **/
                                                        

설명)
바운싱이나 더블바운싱이 되는 원리는.
역시 없는 메일로 보낸 메일의 리턴때문이다.
postmaster, root, anonymous 등의 메일이 from:이나 to:에 들어가므로 파라메터로 들어오는
ARGV[1]. ARGV[2]에서 검사후 강제 종료시켜버리면
/var/qmail/queue/mess에 남아 꾸준히 발송하여 프로세스를 잡아먹는 현상을 방지 할 수 있다.
반응형

'Tip & Tech > Linux | Unix' 카테고리의 다른 글

qmail control 파일들  (0) 2010.10.20
ld.so.conf 사용법  (0) 2010.10.20
qmail 관련 명령어들.  (0) 2010.10.20
Java 2 SDK, Standard Edition, v. 1.4.2 Installation Notes  (0) 2010.10.20
RHEL 관련 java, javac가 gij* 라면  (0) 2010.10.20
반응형

-- 큐 삭제
  - 패턴으로 삭제
    $ /var/qmail/bin/qmail-remove -p foolabo -r
  - 전체 삭제
    $ /var/qmail/bin/qmail-remove -r
-- 큐 상황(갯수)
    $ /var/qmail/bin/qmail-qstat
-- 큐 읽기
    $ /var/qmail/bin/qmail-read
로그보기 tai64nlocal 변환
ex) cat /var/log/qmail/qmail-smtpd/current | /usr/local/bin/tai64nlocal
반응형
반응형

Java 2 SDK, Standard Edition, v. 1.4.2 Installation Notes

기본 설치
Download j2sdk-1_4_2_03-linux-i586.bin (다운받은다음 644나 755권한을)
다운로드 받은 j2sdk-1_4_2_03-linux-i586.bin 파일을 설치를 원하는 디렉토리에 복사한다. (일반적으로 /usr/local/)
권한을 다음 처럼되어있는지 확인 혹 설정한다.
chmod 755 j2sdk-1_4_2_03-linux-i586.bin

파일이 있는 곳에서 다음과 같이 명령한다.
./j2sdk-1_4_2_03-linux-i586.bin

링크를 걸어준다.
ln -s /usr/local/j2sdk1.4.2_03 /usr/local/j2sdk

환경 설정
어느곳에서나 java 명령을 쳐도 이를 인식하고 또 기본 jar 파일 들을 클래스 패스에 등록하기 위해 다음 파일을 수정(혹 만듬)한다.
vi /etc/profile.d/jdk.sh

다음과 같은 내용을 적는다.
#export JAVA_HOME="/usr/local/j2se"
export JAVA_HOME="/usr/local/j2sdk"
export PATH="$PATH:$JAVA_HOME/bin"
export CLASSPATH=".:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jre/lib/rt.jar"
export CLASSPATH="$CLASSPATH:$JAVA_HOME/jre/lib/ext"

만약 톰캣이 깔려있다면 다음 줄도 추가한다.(아마도 이 라인은 톰캣을 깐 후에 하는 작업이 될듯)
export CLASSPATH="$CLASSPATH:$CATALINA_HOME/lib/servlet.jar"

vi를 저장하고 빠져나온다.
저장한 내용을 반영시키기 위해 다음과 같이 타입한다.
source /etc/profile

-------------------------------------------------------------------------------------------------

JDK 설치

1. 설치파일
Java(TM) 2 Platform Standard Edition Development Kit
-> Download : http://java.sun.com/
-> jdk-1_5_0_06-linux-i586-rpm.bin (자동실행파일)

2. 설치

[root@voyager jdk]# chmod 755 jdk-1_5_0_06-linux-i586-rpm.bin
[root@voyager jdk]# ./jdk-1_5_0_06-linux-i586-rpm.bin
Sun Microsystems, Inc. Binary Code License Agreement

for the JAVA 2 PLATFORM STANDARD EDITION DEVELOPMENT KIT 5.0

중략...

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

Do you agree to the above license terms? [yes or no]
y
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_06-linux-i586.rpm
준비 중... ########################################### [100%]
1:jdk ########################################### [100%]

Done.
[root@voyager jdk]# rpm -qi jdk
Name : jdk Relocations: /usr/java
Version : 1.5.0_06 Vendor: Sun Microsystems, Inc.
Release : fcs Build Date: 2005년 11월 11일 (금) 오전 07시 20분 19초
Install Date: 2006년 04월 26일 (수) 오전 11시 41분 59초 Build Host: tiger-linux
Group : Development/Tools Source RPM: jdk-1.5.0_06-fcs.src.rpm
Size : 84094742 License: Sun Microsystems Binary Code License (BCL)
Signature : (none)
Packager : Java Software
URL : http://java.sun.com/
Summary : Java(TM) 2 Platform Standard Edition Development Kit
Description :
The Java 2 Platform Standard Edition Development Kit (JDK) includes both the
runtime environment (Java virtual machine, the Java platform classes and
supporting files) and development tools (compilers, debuggers, tool libraries
and other tools).

The JDK is a development environment for building applications, applets and
components that can be deployed with the Java 2 Platform Standard Edition
Runtime Environment.
반응형
반응형

설치한 jdk의 javac와 java를 심볼릭링크로 거세연...
반응형
반응형

grep를 사용해서 파일내 문자열 찾기    
grep -nr [찾을 문자열] ./  
반응형
반응형

kldp에 있는 자료입니다.
제가 쉽게 보려고 가져온 것이므로 문제될시 삭제하도록 하겠습니다.


http://wiki.kldp.org/KoreanDoc/VI-miniRef-KLDP


VI 레퍼런스 미니 가이드                                    

                  ####################################  
                  ########## VI 초보 가이드 ##########  
                  ####################################  

글쓴이: 유형목(embryo@nownuri.net)

0. 들어가기 전에

유닉스를 처음 쓰는 사람들이 제일 곤혹스러워 하는 것이 무엇일까?
그것은 바로 "편집기" 일것이다.

편집기의 대명사로 일컬어지는 VI 와 Emacs ..

그중에서도 정통파로 일컬어지는 VI 편집기, 그러나 도스, 윈도우를 쓰던 사용자
들에겐 아주 고약스러운 물건이 아닐수 없다.

사용방법이 전혀 낯선것은 물론이요, 매뉴얼이 있어도 개념없이 사용하게 되면
짜증만을 불러 일으키게 된다.

본인도 VI 를 익숙하게 쓸 수 있기까지 수개월이 걸렸다. VI 를 사용하다보면
-- 물론 Emacs 도 마찬가지지만..-- 이 자그마한 프로그램 하나에도 철학이 담겨져
있음을 느끼게 된다.

VI 의 단순한 사용방법을 익히는것이 아니라 그..철학을 느끼게 되는 순간..

생각하는 것보다 손가락이 먼저 움직이는 VI 매니아가 되어 있는 당신을 발견하게
될것이다. ^^


1. 미리 알아두어야 할것들

1.1 VI 명령어 모드 3 가지 ##

1) ESC 모드
2) 편집모드
3) 콜론모드(ex모드)

1.2 VI 명령어의 간단한 문법

(반복횟수)(편집명령)(반복횟수)(커서이동명령)

현재의 위치에서 커서 이동명령의 내용대로 문서의
임의위치로 이동하는 순간, 편집명령어의 내용이 수행된다.

1.3 ESC 모드에서 사용되는 몇가지 기호

G        :  화일의 맨끝
^        :  현재줄의 맨앞 (빈칸무시)
0        :  현재줄의 맨앞
$        :  현재줄의 맨뒤
%        :  짝을 이루는 기호 확인하기
w        :  다음 단어
b        :  이전 단어
e        :  현재 단어의 끝 글자

1.4 여러가지 특수한 기호들

.        :  한글자를 대표하는 기호 (dos 의 ? 와 동일)
*        :  여러개의 문자를 동시에 대표하는 기호
^        :  줄의 처음시작.
$        :  줄의 맨끝.
%        :  처음줄부터 끝줄까지
\        :  특수한 기호들이 가지는 뜻을 없앨때 사용.

[ ]      :  일정한 제한을 두어 글자를 대표하고자 하는 기호.
[a-z]    :  a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z 를 대표
[A-Z]    :  A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z 를 대표
[AB]     :  A 또는 B
p[aeiou]t:  pat, pet, pit, pot, put 를 대표
[0-9]    :  0,1,2,3,4,5,6,7,8,9 를 대표


2. 커서 움직이기

2.1 글자 단위 이동

           위쪽으로
          
           \  k                    사선을 옆으로 그어 놓은 이유는 보통
            \                      초보자들이 h, l 은 잘 구별하는 반면
왼쪽으로  h  \   l  오른쪽으로     k, j 를 항상 혼동하기 때문이다
              \
            j  \                   항상 h,j \ k,l 로 기억해두면 잊지않
                                   게 된다.
         아래쪽으로

2.2 줄 단위 이동

^       :   줄의 맨앞으로 (빈칸무시)
0       :   줄의 맨앞으로
$       :   줄의 맨뒤로
%       :   짝을 이루는 기호 확인하기

+       :   다음줄의 첫번째 글자로
-       :   윗줄의   첫번째 글자로

n|      :   현재줄의 n 번째 열로 (n은 임의의 숫자)

H       :   화면상에 처음줄로
M       :   화면상의 중간줄로
L       :   화면상의 마지막줄로

nH      :   화면상의 처음줄로부터 n 줄 밑으로
nL      :   화면상의 마지막줄로부터 n 줄 위로

G       :   맨 마지막줄로 (go)
nG      :   n 번째줄로
gg      :   맨 마지막줄로
ngg     :   n 번째줄로
:n      :   n 번째줄로

2.3 단어 단위 이동

w        :   한단어 오른쪽으로 (word)
b        :   한단어 왼쪽으로 (back)

e       :   현재 단어의 끝으로 이동 (end)
E       :   현재 단어의 끝으로 이동 (구두점 무시 - 영문자에 해당 - ? . !.)

)       :   다음 문장의 시작으로
(       :   이전 문장의 시작으로
}       :   다음 문단의 시작으로
{       :   이전 문단의 시작으로
]]      :   다음 섹션의 시작으로
[[      :   이전 섹션의 시작으로

2.4 화면단위 이동

Control - F(orward)   한화면   밑으로 이동.
Control - B(ackward)  한화면   위로   이동.
Control - D(own)      반쪽화면 밑으로 이동.
Control - U(pon)      반쪽화면 위로   이동.

Control - E           커서는 현재위치 그대로 화면만 한줄씩 위로   이동
Control - Y           커서는 현재위치 그대로 화면만 한줄씩 아래로 이동

z                     커서의 위치와 함께, 화면상의 맨위로
nz                    n번 라인을 화면상의 맨위로
z.                    커서의 위치와 함께, 화면상의 중간으로
z-                    커서의 위치와 함께, 화면상의 맨아래로

## Control - G        현재 편집문서의 정보 보여주기
## Control - L        화면 재표시 (글자가 깨졌을경우)
## Control - R(edraw) 화면 재표시 (글자가 깨졌을경우)


3. 편집하기

3.1  복사, 붙이기, 합치기

y       :   (Yank)    복사하기
            yy        한줄복사
            2yy       두줄복사
            nyy       n줄 복사 (n 은 임의의숫자)
            yw        한단어 복사
            y2w       두단어 복사
            y$        그줄 끝까지 복사
            y0(y^)    그줄 처음까지 복사
            yG        문서의 끝까지 복사
            Y         한줄복사 (yy 와 동일)

## 마지막 명령어의 반복 ##
.       :   마지막에 수행한 명령어를 반복한다.
            2.        명령어를 2번 반복한다.

p       :   (Put or Paste) 붙이기
            p         아래로(오른쪽으로) 붙이기
            2p        아래로(오른쪽으로) 두번 붙이기
            P         위로(왼쪽으로) 붙이기
            2P        위로(왼쪽으로) 두번 붙이기

J       :   (Join)    두줄 합치기
            J         현재줄을 윗줄에 붙이기 (두줄 합치기)
            3J        세줄합치기

3.2 지우기, 복구하기, 바꾸기

d       :   (Delete)  지우기
            dd        한줄지우기
            2dd       두줄지우기
            ndd       n줄지우기 (n 은 임의의숫자)
            dw        한단어 지우기
            d2w       두단어 지우기
            d$        그줄 끝까지 지우기
            d0(d^)    그줄 처음까지 지우기
            dG        문서 끝까지 지우기
            D         그줄 끝까지 지우기 (d$ 와 동일)

u       :   (Undo)    복구하기
            u         한번복구하기
            2u        두번복구하기

c       :   (Change)  바꾸기
            cc        한줄바꾸기
            2cc       두줄바꾸기
            ncc       여러줄 바꾸기 (n 은 임의의숫자)
            cw        한단어 바꾸기
            ce        한단어 바꾸기 (공백 제외)
            c2w       두단어 바꾸기
            c$        그줄 끝까지 바꾸기
            c0(c^)    문서 끝까지 바꾸기
            C         그줄 끝까지 바꾸기 (c$ 와 동일)

r       :   (Replace) 한글자 바꾸기
            r         한글자 바꾸기
            2r        두글자 바꾸기

## r 명령어는 insert 모드로 바뀌지 않는다. ##

R       :             바꾸면서 덮어 쓰기
s       :             한글자 지우고 insert 모드로 - cl 와 동일 -
S       :             한줄지우고 insert 모드로 - cc 와 동일 -
~       :             대문자 <-> 소문자 바꾸기 - 영문자에만 해당 -

## 지우기와 바꾸기의 차이점은 바꾸기 명령어 후에  ##
## vi 편집모드로 바뀐다.                          ##

4. 찾기

/pattern              pattern 이라는 단어 찾기 - 위에서 아래로
?pattern              scully 라는 단어찾기 - 아래에서 위로

/       :             찾기반복 - 위에서 아래로
n       :             찾기반복 - 위에서 아래로

?       :             찾기반복 - 아래에서 위로
N       :             찾기반복 - 아래에서 위로

fx      :             현재줄에서 x문자 찾기 - x 는 한개의 글자 -
Fx      :             현재줄에서 반대방향으로 x문자 찾기 - x 는 한개의 글자 -
tx      :             현재줄에서 x문자를 찾아서 바로전에 커서놓기
Tx      :             현재줄에서 반대방향으로 x문자를 찾아서 바로후에 커서놓기

;       :             현재줄에서 한글자 찾기반복
'       :             현재줄에서 한글자 찾기반복 - 반대방향으로 -

## 찾기와 편집명령의 응용 ##

d/simple              simple 이라는 단어가 나올때까지 지우기
d/^scully             줄의 맨앞에 scully 라는 단어가 나올때까지 지우기
y/yahoo               yahoo 라는 단어가 나올때까지 복사하기

5. 편집모드 지정하기

i       :   insert    현재커서위치
            10i*      * 문자를 10개 집어넣기
            25i=-     =- 를 25개 반복하기
I       :             현재커서가 위치한 줄의 맨처음에
a       :   append    현재커서위치 바로 다음에
A       :             현재커서가 위치한 줄의 맨끝에
o       :   open      현재커서위치 바로 아래줄에
O       :   Open      현재커서위치 바로 윗줄에

6. 위치 기억하기

mx      :   mark      현재의 커서위치를 x 라는 문자로 기억          
`x      :             기억된 x 위치로 이동
``      :             이동하기 전의 위치로 (제자리)
'x      :             기억된 x 위치의 맨 앞으로 이동
''      :             이동하기 전 위치의 맨앞으로 이동

7. 버퍼 이용하기

"xyy    :             x 라는 이름의 버퍼에 한줄 복사 하기
"xp     :             x 라는 이름의 버퍼에 저장된 내용을 붙이기

## 잠시 쉬었다 가기 ##
:=                    현재 줄번호 보여주기
:/pattern/ =          pattern 이 위치한 줄번호 보여주기


8. ex 명령어 익히기

8.1 ex 명령어의 기본형식

:k,l command m
(범위지정) (명령어) (명령이 수행될 위치)
----------------------------------------

예)

:1,10 co 50           1 줄 부터 10 줄 까지를 50 줄 이후로 복사.
:34,50 d              34 줄 부터 50 줄 까지 삭제.
:100,150 m 10         100 줄 부터 150 줄까지를 10 줄 이후로 옮김.

:.,$ d                현재줄부터 끝까지 지우기
:.,+20 co -4          현재줄부터 20줄을, 4줄 위에 복사하기
:-,+ t 0              위, 아래로 한줄(총 3줄)씩을, 문서 맨위에 복사하기

:/pattern/ d          pattern 이 들어있는 줄 지우기
:/pattern/ -nd        pattern 이 들어있는 줄로부터 n 번째 윗줄 지우기
:/pattern/ +nd        pattern 이 들어있는 줄로부터 n 번째 아랫줄 지우기

:/pattern1/,/pattern2/ d
                      pattern1 이 들어있는 줄부터, pattern2 가 들어있는
                      줄까지 지우기

:.,/pattern/ m 23     현재줄부터 pattern 이 들어있는 줄까지, 23번줄 이후로
                      옮기기

8.2 g 옵션 붙이기

:g/pattern            화일전체에서 마지막으로 pattern 이 쓰여진 줄로 가기
:g/pattern/ p         화일전체에서 pattern 이 있는줄 보여주기
:g/pattern/ nu        화일전체에서 patterm 이 있는줄을 번호와 함께 보여주기

:60,124 g/pattern/ p  60,124 줄 사이에서 pattern 이 들어있는줄 보여주기

8.3 저장 및 종료하기

:w                    저장하기 (write) :q                    종료하기 (quit)
:wq                   저장하고 종료하기
:x                    저장하고 종료하기 (:wq 와 동일)

:w!                   강제로 저장하기 (read-only 로 열었을경우)
:q!                   편집한 내용을 저장하지 않고 종료하기

:w new_file_name      새로운 파일이름으로 저장하기
:w %.new              현재화일 이름에 .new 를 붙여서 새로운 화일로 저장.

:230,$ w file_name    230 줄부터 끝줄까지 file_name 으로 저장하기
:.,600 w file_name    현재줄부터 600줄까지 file_name 으로 저장하기

:1,10 w new_file      1줄부터 10줄까지 new_file 로 저장하기
:340,$ w >> new_file  340줄부터 끝줄까지 new_file 에 추가하기

8.4 읽기

:r[ead] filename      현재위치에 filename 읽어들이기
:r /usr/local/data    현재위치에 /usr/local/data 읽어들이기

:185 r /usr/local/data
                      185줄 이후에 /usr/local/data 읽어들이기
:$ r /usr/local/data  맨끝줄 이후에 /usr/local/data 읽어들이기
:0 r /usr/local/data  맨윗줄에 /usr/local/data 읽어들이기

:/pattern/ r /usr/local/data
                      pattern 이 존재하는 줄에 /usr/local/data 읽어들이기

8.5  다중편집하기

vi file1 file2 file3

:args                 편집중인 화일목록 보여주기
:n[ext]               다음 화일로 넘어가기
:prev[ious]           이전화일로 돌아가기

## 편집중인 화일이 저장되지 않으면 다음 화일로 넘어갈수 없다. ##

새로운 화일 편집하기

:e[dit] file_name     새로운 file_name 편집하기.              
:e!                   현재의 편집중인 내용을 무시하고 가장 최근에
                      편집한 내용을 다시편집하기

8.6 g 옵션과 바꾸기

:m,n s/old/new/g      
:g/pattern/ s/old/new/g
-------------------------

:1,30 s/his/the/gc    1 줄부터 30 줄까지 his 를 the 로 바꾸면서 확인하기.

:g/BX/ s/Esc/ESC/g    BX가 있는줄만 찾아서 Esc 를 ESC 로 바꾸기.

:% s/editer/editor/g  처음줄부터 마지막줄까지, editer 를 editor 로 바꾸기

:g/editer/ s//editor/g
                      위와 동일("s/" 다음에 인자가 없어서 윗줄과 같은효과)
반응형

+ Recent posts