리눅스이 기본 메일 기능인 sendmail의 설정 방법

 

1. sendmail이 서버에 존재하는지 확인.

(없으면 2번부서 시작, 설치되어 있으면 3번부터 시작)

rpm -qa | grep sendmail

 

2. yum으로 sendmail과 sendmail-cf 설치

yum -y install sendmail sendmail-cf

 

3. sendmail 실행

service sendmail start

 

설치 끝! 설정 시작~

 

cd /etc/mail

mv ./sendmail.cf sendmail.cf_old

cp ./sendmail.mc sendmail.mc_old

 

4. sendmail.mc 파일수정

52,53 line 수정 (앞부분 dnl 제거)

 

TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

 

 

 

116  line 수정

127.0.0.1을 0.0.0.0으로 개방

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
(수정 후)
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl


5. m4 명령으로 sendmail.cf 생성
m4 sendmail.mc > sendmail.cf

생성확인~
-rw-r--r-- 1 root root 58697 Dec 26 16:30 sendmail.cf
-rw-r--r-- 1 root root 58691 Nov 27 09:29 sendmail.cf.bak
-rw-r--r-- 1 root root 58439 Nov 12  2010 sendmail.cf_old
-rw-r--r-- 1 root root 58691 Nov 27 09:43 sendmail.cf.rpmsave
-rw-r--r-- 1 root root  7192 Dec 26 16:19 sendmail.mc
-rw-r--r-- 1 root root  7202 Nov 28 08:38 sendmail.mc_old
-rw-r--r-- 1 root root  7192 Nov 27 09:41 sendmail.mc.rpmsave


6. sendmail.cf 수정
95line 수정(도메인이 있을 경우 수정. 없다면 크게 신경 안써도 됨)
# my official domain name
# ... define this only if sendmail cannot automatically determine your domain
#DjYour domian name



7. 445 line 보안을 위해 일부 글자 다음과 같이 삭제
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
(수정 후)
O SmtpGreetingMessage=$j Sendmail; $b



8. /etc/mail/local-host-names 도메인추가

*hostname local-host-names과 동일한 도메인 입력할것!

 

9. 서비스 재시작

 service sendmail restart

 

10. 테스트 메일 발송하기

# telnet localhost 25          // 방화벽에서 25번 포트를 열려있는지 확인할것. 안열려 있다면 방화벽에 막혀 메일전송 불가!

mail from:<me@mail.com>  //보내는 사람 주소

rcpt to:<you@mail.com>  //받는 사람 주소

data                        

hi. sendmail!!    //메일 내용 입력

.      //입력 마침. 내용작성 후 반드시 입력

 

quit   //종료

 

 

해당메일로 가서 메일이 정상적으로 수신되었는지 확인!!

 

 

 

AND

일반적으로 책갈피(인텍스) 기능을 사용해서 스크롤 하지만

인덱스 기능을 사용 할 수 없는 경우에는  화면의 위치값을 이용한 방법을 사용해야 합니다.

 

URL의 #event1 ~ 4 까지의 인덱스 값을 체크해서 스크롤링 하는 예제 소스 입니다.

너무나 간단한 소스이므로 보시면 다 알 것입니다. ^^

 

 


 

  

<script language="javascript"> 
 if(window.location.href.indexOf("#event1")!=-1){
   $(window).load(function(){
    $('html, body').animate({scrollTop:1445}, 'slow');
    return false;
   });
  }else if(window.location.href.indexOf("#event2")!=-1){
   $(window).load(function(){
    $('html, body').animate({scrollTop:2250}, 'slow');
    return false;
   });
  }else if(window.location.href.indexOf("#event3")!=-1){
   $(window).load(function(){
    $('html, body').animate({scrollTop:3030}, 'slow');
    return false;
   });
  }else if(window.location.href.indexOf("#event4")!=-1){
   $(window).load(function(){
    $('html, body').animate({scrollTop:3810}, 'slow');
    return false;
   });
  }else{
}
</script>


 

 

'프로그래밍 > jQuery' 카테고리의 다른 글

[jQuery] 제이쿼리 인클루드  (0) 2014.01.28
AND

화면 로딩후 원하는 위치로 옮기고 싶을 때 사용하는 스크립트

 

자동으로 스크롤되기 하는 소스

다음내용을 <head>와 </head> 사이에 넣어 줍니다.




500은 위로 자동스크롤 시킬 화면의 세로 높이 10은 스크롤 속도

 

 

다음엔 에 아래의 태그를 넣어줍니다.

 

 
<body onload="scroller()"> 

 

 

위의 속성을 에 주지 않고 와 사이에 아래와 같은 폼 양식을 만들어 사용하면 페이지가 열림과 동시에 화면스크롤이 되지 않고 페이지가 열린 후 해당 단추를 눌렀을 때 화면이 스크롤 됩니다.

 

<FORM> 
<INPUT onclick=scroller() type=button value=클릭!!> 
</FORM> 

 

 

 

 

 

AND

리눅스 도메인 셋팅방법

레드햇 리눅스 7.3 기준의 도메인 셋팅방법입니다.
SSH 접속방법에 대해서는 생략하였습니다.

1. HOME 디렉토리로 이동합니다.

 

        [root@211 root]# cd /home
                

 

 

2. HOME 디렉토리 파일내용 보기

 

        [root@211 root]# ll (엔터)
        total 12
        drwx--x--x    4 internet      internet          4096 Oct 21 16:53 internet
        drwxr-xr-x    3 root          root              4096 Oct 15 14:12 httpd
        drwx--x--x    3 sarang        sarang            4096 Oct 15 14:17 sarang
                

 

 

3. 사용자 추가 (보통 사용자명과 도메인명을 동일하게 해야 관리하기 편리합니다.)

 

        [root@211 home]# adduser domain
                

 

 

4. 추가된 사용자에 비밀번호 지정

 

        [root@211 home]# passwd domain
        Changing password for user domain.
        New password:           <-- 비밀번호 입력
        BAD PASSWORD: it is based on a dictionary word
        Retype new password:           <-- 비밀번호 한번 더 입력
        passwd: all authentication tokens updated successfully.
                
    * 비밀번호는 화면에 보이지 않습니다.

 

 

5. 추가된 사용자 확인

 

        [root@211 root]# ll (엔터)
        total 12
        drwx--x--x    4 internet      internet          4096 Oct 21 16:53 internet
        drwxr-xr-x    3 root          root              4096 Oct 15 14:12 httpd
        drwx--x--x    3 sarang        sarang            4096 Oct 15 14:17 sarang
        drwx------    3 domain        domain            4096 Oct 18 12:00 domain <-- 추가됨
                

 

 

6. 퍼미션 변경

 

        [root@211 home]# chmod 711 domain
                
    위와 같이 하고서 ll 명령으로 보면 퍼미션이 변경됨을 확인할 수 있습니다.
    변경전 : drwx------
    변경후 : drwx--x--x

7. 네임서버 셋팅방법 - 네임서버 설정파일 열기


 

        [root@211 home]# vi /etc/named.conf
                
    * vi 는 윈도우의 편집기 같은 것입니다.

 

 

8. 네임서버 셋팅방법 - 네임서버 설정파일 수정하기

    vi 편집기로 수정을 하려면 먼저 i 를 눌러 수정모드로 전환하고,
        (상략)
    
        include "/etc/rndc.key";
    
        zone "internet.com" { type master; file "named.zone"; };
        zone "domain.com" { type master; file "named.zone"; }; <-- 이와같이 한줄삽입
                
    수정이 끝나면 esc 키를 누르세요.
    이제 수정사항을 저장하려면 :wq 를 치시면 됩니다.
    수정사항을 저장하지 않으려면 :q! 를 치시면 됩니다.
    [주의사항] 네임서버를 잘못수정하면 다른 도메인까지 작동되지 않을 수 있습니다.

 

 

9. 네임서버 셋팅방법 - 네임서버 재시작하기



 

        [root@211 home]# /etc/rc.d/init.d/named restart
        Stopping named: [  OK  ]
        Starting named: [  OK  ]
                
    * 항상 네임서버에 변경을 주었으면 네임서버를 재시작 해주어야 합니다.
    (홈페이지 수정후에 새로고침 하듯이...)
    * 위와같이 두개의 [ OK ]가 표시되면 정상입니다.

 

 

10. 아피치 셋팅방법 - 아파치 설정파일 열기



 

        [root@211 home]# vi /etc/httpd/conf/httpd.conf 
                

 

11. 아피치 셋팅방법 - 아파치 설정파일 수정하기

    제일 하단으로 방향키를 눌러 이동합니다.
        (상략)
    
        < VirtualHost 211.240.14.111 >
          ServerAdmin webmaster@internet.com
          ServerName internet.com
          ServerAlias www.internet.com
          DocumentRoot /home/internet/public_html
          ScriptAlias /cgi-bin /home/internet/public_html/cgi-bin
        < /VirtualHost >
    
        위의 내용을 복사하여 도메인명과 이름을 바꿔 아래와 같이 추가합니다.
        
          ServerAdmin webmaster@domain.com
          ServerName domain.com
          ServerAlias www.domain.com
          DocumentRoot /home/domain/public_html
          ScriptAlias /cgi-bin /home/domain/public_html/cgi-bin
        < /VirtualHost >
                
    수정이 끝나면 esc 키를 누르세요.
    이제 수정사항을 저장하려면 :wq 를 치시면 됩니다.
    수정사항을 저장하지 않으려면 :q! 를 치시면 됩니다.
    [주의사항] 아파치를 잘못수정하면 다른 도메인까지 작동되지 않을 수 있습니다.

 

 

12. 아피치 셋팅방법 - 아파치 재시작하기



 

        [root@211 home]# /etc/rc.d/init.d/httpd restart
        Shutting down http: [  OK  ]
        Starting httpd: [  OK  ]
                
    * 항상 아파치 설정에 변경을 주었으면 아파치를 재시작 해주어야 합니다.
    (홈페이지 수정후에 새로고침 하듯이...)
    * 위와같이 두개의 [ OK ]가 표시되면 정상입니다.

 

 

13. 이메일 셋팅방법 - 이메일에 사용할 도메인 설정파일 열기



 

        [root@211 home]# vi /etc/mail/local-host-names
                

 

 

14. 이메일 셋팅방법 - 이메일에 사용할 도메인 추가하기



 

        # local-host-names - include all aliases for your machine here.
        domain.com <-- 이와같이 도메인명만 적어주면 됩니다.
                
    * vi 사용법은 생략합니다.

 

 

15. 이메일 셋팅방법 - 이메일 주소 설정파일 열기



 

        [root@211 home]# vi /etc/mail/virtusertable
                

 

 

16. 이메일 셋팅방법 - 이메일 주소 설정파일에 메일주소 추가하기



 

        ###############################################
        # 사용하고픈 메일주소 		사용자
        ###############################################
        webmaster@domain.com		domain
        webmaster@domain.com		domain@hanmail.net
                
    * 첫번째 같이 셋팅했을 경우 누군가 webmaster@domain.com 으로 메일을 보내면 계정사용자 domain 이 받아본다는 뜻입니다.
    * 두번째 같이 셋팅하면 webmaster@domain.com 으로 메일을 domain@hanmail.net 으로 전달해줍니다. (이메일포워딩)

 

 

17. 이메일 셋팅방법 - 이메일서버 재시작하기



 

    * mail 디렉토리로 이동합니다.
        [root@211 home]# cd /etc/mail (엔터)
                

        [root@211 home]# make (엔터)
             
    * 메일만 추가했으면 항상 위와같은 명령어를 한번 실행해주세요.

        [root@211 home]# /etc/rc.d/init.d/sendmail restart (엔터)
                
    * 도메인도 추가했으면 이걸 실행해 주셔야 합니다.

    수고하셨습니다.

     

     

    AND

    리눅스에서 기본적인 권한 속성을 일괄 부여 하거나 수정 하는 방법 

     

     

    파일들만 변경

     

    #find ./ -type f -exec chmod -v 600 {} \;

     

     

    폴더만 변경

     

    #find ./ -type d -exec chmod -v 707 {} \;

      

     

    파일 및 폴더 하위 일괄 변경

     

    chmod -R 755 *

     

     

     

    AND

    리눅스에서 사용되는 주요 명령어 모음

     

    리눅스 시스템 종료 방법
    1. 바탕화면에서 : 시스템 -> 끄기 -> 끄기
    2. 터미널에서 : "shutdown -h now", "halt", "init 0"

    * shutdown 명령어
    shutdown -h +10 (10분 후 종료, h:halt)
    shutdown -r 22:00 (오후 10시에 재부팅, r:reboot)
    shutdown -c (예약된 shutdown명령 취소)
    shutdown -k now (종료 메세지는 보이나 종료 안댐.)

    재부팅
    - "shutdown -r now", "reboot", "init 6"

    로그아웃
    - "logout", "exit"

    * init 명령어(런레벨, Runlevel)
    0번 : 종료모드
    1번 : 단일 사용자 모드(시스템 복구시 사용)
    2번 : NFS 없는 다중 사용자 모드
    3번 : 텍스트 모드의 다중 사용자 모드
    4번 : 없음
    5번 : x윈도우 모드의 다중 사용자 모드
    6번 : 재부팅 모드
    </etc/inittab 에 지정되어 있음.>

    vi(visual)  ; ex) vi test.txt

    man(manual) ; ex) man <명령어>

    genisoimage ; iso 생성
    ex) genisoimage -r -J -o test.iso /boot
        "-r -J" : 8글자 이상의 파일명 및 대소문자를 구분해서 인식
        "-o" : 출력할 파일을 위한 옵션
        "test.iso" : 생성될 iso 파일명
        "/boot" : 포함될 파일 또는 디렉토리

    cdrecord    ; cd로 굽기
    growisofs   ; DVD로 굽기

    * ls 명령어 - dos의 "dir"
    : ls    ; 현재의 디렉토리 목록
    : ls /usr/bin   ; /usr/bin 의 디렉토리 목록
    : ls -a   ; 디렉토리 목록(숨김파일 포함)
    : ls -l  ; 디렉토리 목록 자세히
    : ls *.txt  ; txt파일 보여줌
    : ls -l /usr/bin/a* ; /usr/bin/ 디렉토리에서 앞글자가 a인 목록.

    * cd 명령어 - 디렉토리 이동
    : cd    ; 사용자의 홈 디렉토리로 이동
    : cd ~root  ; root사용자의 홈 디렉토리로 이동
    : cd ..   ; 상위 디렉토리로 이동
    : cd /usr/bin  ; /usr/bin 디렉토리로 이동(절대경로)
    : cd ../usr/bin ; 상대경로로 이동

    * pwd (print working directory)
    : pwd    ; 현재 작업중인 디렉토리 경로 출력

    * rm - 삭제(권한이 있어야 함)
    : rm abc.txt  ; 삭제(내부적으로 rm -i 로 연결됨
    : rm -i abc.txt ; 삭제 시 확인을 물어본다
    : rm -r abc  ; 디렉토리 삭제
    : rm -rf abc   ; abc 이하 전부 강제 삭제

    * cp - 복사
    : cp abc.txt cba.txt ; abc.txt를 cba.txt 파일로 복사
    : cp -r abc cba ; 디렉토리 복사

    * touch - 크기 0 파일 생성, 존재시 수정 시간 변경
    : touch abc.txt

    * mv - 파일 이름 변경 및 위치이동
    : mv aaa bbb ccc ddd ; aaa, bbb, ccc 파일을 ddd 디렉토리로 이동
    : mv abc.txt www.txt ; 이름 변경

    * mkdir - 새로운 디렉토리 생성
    : mkdir abc  ; 현재 디렉토리 아래 abc 디렉토리 생성
    : mkdir -p def/fgh ; 현재 디렉토리 아래 def/fgh 생성

    * rmdir - 디렉토리 삭제(파일이 있으면 안됨)
    : rmdir abc

    * cat - 텍스트 작성 파일 화면에 출력
    : cat install.log

    * head, fail - 텍스트 파일 앞 10행 or 뒷 10행을 출력
    : head install.log
    : fail install.log

    * more - 텍스트 파일 페이지 단위 출력
    (space : 다음페이지, b : 앞페이지, Q : 뒷페이지)
    : more install.log
    : more +100 install.log ; 100행부터 보여줌

    * less - more의 확장, pagedown, pageup 사용 가능
    : less install.log
    : less +100 install.log

    * file - 파일의 종류 표시
    : file install.log
    : file /bin/gzip

    * clear - 명령창을 깨끗하게
    : clear


    < 사용자 및 그룹 관련 명령어>
    * useradd or adduser
    -> 실행시 /etc/passwd, /etc/shadow, /etc/group에 새로운 행 추가.
    : useradd newuser
    : useradd -u 555 newuser  ; 555 라는 이름의 유저 추가
    : useradd -g mygroup newuser  ; mygroup에 포함된 newuser 생성
    : useradd -d /newhome newuser  ; 홈 디렉토리가 newhome인 newuser 생성
    : useradd -s /bin/csh newuser  ; 기본 셸 /bin/csh 지정

    * passwd - 비밀번호 지정 및 변경
    : passwd newuser   ; newuser의 비밀번호 지정 및 변경

    * usermod - useradd와 사용법 동일, 사용자 속성 변경
    : usermod -g root newuser ; newuser의 그룹을 root 그룹으로 변경

    * userdel - 사용자 삭제
    : userdel newuser
    : userdel -r newuser

    * change - tkdydwk dkagh wnrlwjr qusrud
    : change -l newuser  ; newuser에 설정된 사항 확인
    : change -m 2 newuser  ; 설정암호 최소 일자(2일)
    : change -M 30 newuser  ; 설정암호 사용가능 일자(30일)
    : change -E 2013/12/12 newuser ; 2013/12/12에 암호 만기
    : change -W 10 newuser  ; 만기 10일 부터 경고 메세지 출력

    * groups - 사용자가 속한 그룹을 보여줌
    : groups

    * groupadd - 새로운 그룹 생성
    : groupadd newgroup
    : groupadd -g 555 newgroup ; 그룹 ID가 555인 newgroup생성

    * groupmod - 그룹 속성 변경
    : groupmod -n newgroup mygroup ; newgroup 이름을 mygroup으로 변경

    * groupdel - 그룹 삭제
    : groupdel newgroup
    (해당 그룹을 주요 그룹으로 지정한 사용자가 없을 때 사용 가능)

    * gpasswd - 그룹의 암호를 생성하거나 관리를 수행
    : gpasswd newgroup  ; newgroup의 암호지정
    : gpasswd -A newuser newgroup ; newuser를 newgroup의 관리자로 지정
    : gpasswd -a user1 newgroup ; user1을 사용자로 추가
    : gpasswd -d user1 newgroup ; user1을 사용자에서 제거


    < RPM >
    * 설치
    : rpm -Uvh (패키지파일)
    - U : (대문자) 설치되어 있지 않다면 'i'와 같이 설치,
           설치되어 있다면 업그레이드한다.
    - v : 설치 진행상황 확인
    - h : 설치진행과정을 화면에 출력

    * 삭제
    : rpm -e (패키지이름)
    - e : Erase

    * 이미 설치된 패키지 질의
    : rpm -qa (패키지)  ; 설치되었는지 확인
    : rpm -qf (파일의 절대 경로) ; 어느 패키지에 포함된 것인지 확인
    : rpm -ql (패키지)  ; 어떤 파일이 포함되었는지 확인
    : rpm -qi (패키지)  ; 상세정보

    * 설치되지 않은 패키지 질의
    : rpm -qlp (패키지)  ; 어떤 파일이 포함되었는지
    : rpm -qip (패키지)  ; 상세정보

    < YUM >
    * 설치
    : yum (-y) install (패키지) 
    &&& -y 옵션을 쓰면 무조건 yes로 넘어감

    * rpm파일 설치
    : yum install (rpm파일)

    * yum check-updata  ; 업데이트 가능한 목록 보기

    * yum updata (패키지)  ; 패키지 업데이트, 없다면 install

    * yum remove (패키지)  ; 패키지 제거

    * yum info (패키지)  ; 패키지 요약 정보

    * yum localinstall (패키지) ; 로컬에서 설치 (iso파일에서 설치)

    * yum groupinstall "(패키지그룹)" ; yum grouplist로 확인후 통째로 설치

    * yum list (패키지)  ; 패키지 리스트 출력
    ex) yum list all(모든 리스트), yum list mysql*(mysql이 들어간 목록)

    * yum provides (파일이름) ; 특정 파일이 어느 패키지에 들어있는지..

    * yum install --nogpgcheck (rpm파일) ; GPG키 검사 생략
    ; 페도라에서 인증되지 않은 rpm파일을 설치시 GPG키 생략하고 설치됨.


    < 파일 압축, 묶기 >
    * bzip2 - bz2로 압축하거나 풀기
    : bzip2 (파일명)  ; 파일명.bz2 로 만든다.
    : bzip2 -d "파일명.bz2" ; 파일명.bz2 를 일반파일로 만든다

    * bunzip2 - bzip2 -d 와 같다.

    * gzip - gz으로 압축하거나 풀기
    : gzip (파일명)   ; 파일명.gz 로 만든다.
    : gzip -d "파일명.gz"  ; 파일명.gz 를 일반파일로 만든다.


    * tar - 확장명 tar로 묶거나 풀기
    [동작]
    : c     ; 새로운 묶음
    : x    ; 묶인 파일을 풀어줌
    : t    ; 묶음을 풀기전에 경로 표시
    [옵션]
    : f(필수) - 묶음 파일명 지정  ; 생략시 tape로 백업
    : v - visual    ; 과정을 보여줌
    : z - tar + gzip
    : j - tar + bzip2
    [사용예]
    : tar cvf xinetd.tar
    : tar xvfj (파일명.tar.bz2)
    : tar xvfz (파일명.tar.gz)

    < 파일 위치 검색 >
    * find [경로] [옵션] [조건] [action]
    [옵션] -name, -user(소유자), -newer(전, 후) -perm(허가권), -size(크기)
    [경로] -print(디폴트), -exec(외부명령 실행)
    [사용 예]
    : find /etc -name "*.conf" ; /etc 에 확장자 conf 파일 검색
    : find ~ -perm 644  ; 허가권이 644인 파일 검색
    : find /bin -size +10k -size -100k  ; 10kb~100kb인 파일 검색
    : find ~ -size 0k -exec ls -l { } \;
         -> 사용자 홈 디렉토리 하위에 파일 크기가 0인 파일 목록 상세히 출력
    : find /home -name "*.swp" -exec rm { } \;
         -> /home 홈 디렉토리 하위에 확장자 swp파일 삭제

    * which (실행파일명) - PATH에 설정된 디렉토리 검색(절대경로 포함)

    * whereis (실행파일명) - 실행 파일 및 소스, man 페이지 파일까지 검색

    * locate (파일명) - updatedb 명령 이후 사용가능
                        파일목록 데이터베이스 검색, 빠르고 유용.

    < wine 설치하기 >
    http://kltp.kldp.net/stories.php?story=00/08/11/9653999

    < 시스템 설정 > ststem-config-xxxx
    &&& 패키지 업데이트 yum -y install system-config-xxxx
    : boot   ; 초기 부팅 설정
    : data   ; 날짜, 시간 설정
    : firewall   ; 방화벽
    : keyboard  ; 키보드
    : language  ; 언어
    : lvm   ; lvm 설정
    : network  ; 네트워크
    : printer   ; 프린터
    : rootpassword  ; root 비밀번호
    : service  ; 서비스 가동/중지
    : users  ; 사용자 설정
    : bind   ; 네임 서버
    : display   ; x 윈도우 환경 설정
    : httpd   ; 웹 서버 설정
    : nfs    ; NFS 서버 설정
    : samba   ; 삼바 서버 설정
    : vsftpd  ; FTP 서버 설정

    < CRON >
    - 주기적으로 반복되는 일 설정
    - /etc/crontab 파일
    ex) 01 * * * * root run-parts /etc/cron.hourly
         02 4 * * * root run-parts /etc/cron.daily
         04 4 * * 0 root run-parts /etc/cron.weekly
         42 4 1 * * root run-parts /etc/cron.monthly
         분 시 일 월 요일 권한 실행명령 (0~6 = 일~월요일)

    < AT >
    - 일회성 작업 예약
    - 한번 실행되고 소멸
    ex) at 실행 후 #at <시간>,
         완료시 ctrl+D,
         확인   at-l,
         취소   atrm <작업번호>

    < Network 관련 명령어 >
    : system-config-network
    : system-config-network-tui ; 텍스트 기반
    : service network (start/stop/restart/status)
    : ifup <장치이름> / ifdown <장치이름>  ; 장치 작동
    : ifconfig <장치이름>   ; 해당 장치의 ip주소 설정 정보 출력
    : nslookup   ; DNS 서버 작동 테스트
    : ping (IP/URL)  ; 네트워크 응답 테스트

    < Network 설정관련 파일 > - system-config-network 후
    : /etc/sysconfig/network ; 네트워크의 기본적인 정보가 설정된 파일
    : /etc/sysconfig/network-script/ifcfg-eth0(or ifcfg-eth1)
         ; 장치에 설정된 네트워크 정보 모두
    : /etc/resolv.conf  ; DNS서버의 정보 및 호스트 이름이 들어있는 파일
    : /etc/hosts   ; 현 컴퓨터의 호스트 이름 및 FQDN이 들어있는


    << 파이프, 필터, 리다이렉션 >>
    < pipe > - 두 개의 프로그램을 연결해주는 연결통로
    : | 을 이용함.
    ex) ls -l /etc | more  ; /etc에 파일이 너무 많아서 한페이지씩 봄

    < filter > - grep, tail, wc, sort, grep, awk, sed 등
    ex) ps -ef | grep bash  ; ps -ef 는 모든 프로세스 번호 출력하므로
                                      bash라는 글귀가 들어간 프로세스만 출력
         rpm -qa | grep bind ; 설치된 패키지중 bind라는 글자가 들어간
           패키지만 출력

    < re-direction >
    - 표준 입출력 방향을 바꿈.
    - 표준입력은 키보드, 출력은 모니터지만 이를 파일로 처리하고 싶을 때 주로 사용
    ex) ls -l > aa.lst  ; ls -l의 결과를 aa.lst 파일에 씀(orerwrite)
         ls -l >> aa.lst  ; 위와 같지만 append
         sort < aa.lst  ; aa.lst 파일을 정렬해서 화면에 출력
         sort < aa.lst > bb.lst ; aa.lst를 정렬해서 bb.lst에 쓴다.


    < 프로세스 관련 명령어 >
    1. ps - 현재 프로세스 상태 확인
    ex) ps -ef | grep (프로세스이름)

    2. kill - 프로세스 강제 종료 "-9" 옵션을 함께 사용하면 무조건 종료
    ex) kill -9 (프로세스번호)

    3. pstree - 부모 자식 프로세스관계를 트리형태로 보여줌

    < vi 에디터 비정상적 종료시 대처법 >
    ex) vi abc.log 를 비정상적으로 종료시
    -> abc.log.swp(임시 Swap File)생성.
    --> ls -a 로 파일 확인하고 "rm .install.log.swp"으로 삭제.

    < 데몬(Daemon) ~= 서비스(Service) >
    : 눈에는 보이지 않지만 현재 시스템에서 활동중인 프로세스(백그라운드) 

     

    출처: http://blog.naver.com/minki1111?Redirect=Log&logNo=100189238563

     

    AND

     

    Crontab 이란

     

     crontab은 스케줄링을 관리하는 프로그램으로 시스템 관리자에게 중요한 유틸 중 하나이다. 특정 시간대에 사용자가 작성한 스트립트나 명령을 실행 할 수 있다. 이는 rsync 같은 툴을 같이 사용하여 굉장히 편리한 백업 시스템을 만들 수도 있고 데이터 베이스관리나 기타 반복적인 업무를 간편하게 등록하여 사용 할 수 있다.

    MIN HOUR DOM MON DOW CMD
    

    필드 명세 허용 값
    MIN 0~59
    HOUR 시간 0~23
    DOM 날짜 1-31
    MON 1-12
    DOW 0-6
    CMD 명령어 실행 가능 한 모든 명령어

    1. 다음 시간 6월 10일 오전 8시 30분 을 cron 명령어에 맞게 작성해보자.

    30 08 10 06 * /home/script/backup
    
    • 30: 30분
    • 08: 오전 8시 <24시제>
    • 10: 10일
    • 06: 6월
    • *: 매주

    2. 매일 하루 두 번 증분 백업을 하자.

    00 11,16 * * * /home/script/incremental-backup
    
    • 00: 0분 (정각)
    • 11,16 - 오전 11시 / 오후 4시
    • *: 매일
    • *: 매달
    • *: 매주

    3. 특정 시간대에 작업하기

    00 09-18 ** 1-5 /home/check-db-status
    
    • 00: 0분 (정각)
    • 09-18: 오전 9, 10, 11, 12시 / 오후 1, 2, 3, 4, 5, 6시 마다 작업
    • *: 매일
    • *: 매달
    • 1-5: 월, 화, 수, 목, 금 (주중)

    4. crontab 작업 목록 보기 (명령어)

    $ crontab -l
    @hourly /home/script/hourly-script
    00 09-18 ** 1-5 /home/check-db-status
    
    $ crontab -u foo -l
    no crontab for foo
    
    $ su
    # crontab -l
    no crontab for root
    

     

    5. crontab 목록 수정

    목록 수정을 vi/vim으로 편집하려면 변수를 선언해줘야 한다. export VISUAL=vim

    $ crontab -e
    $ crontab -u foo -e
    

    6. 매분마다 작업하기

    * * * * * CMD
    

    7. 10분 마다 작업하기

    */10 * * * * /home/script/check-disk-space
    0-10/2 * * * * /home/script/check-db-updates-5times
    
    • */10의 뜻은 10분 마다
    • 0-10/2의 뜻은 처음 10분 동안 2분 간격으로

    8. 키워드 사용

    Keyword

    키워드 대치 문법
    @yearly 0 0 1 1 *
    @daily 0 0 * * *
    @hourly 0 * * * *
    @weekly 0 0 * * 0
    @reboot 시스템 시작 시

    다음은 키워드를 사용해 매일 반복하는 작업 스케줄링 crontab이다.

    @daily /home/script/make-log
    

    9. 메일 사용

    crontab 수정시 MAILTO를 선언하면 실행 내용을 메일로 받을 수 있다.

    MAILTO="xajax@naver.com"
    

    10. 파일을 통한 crontab 설정

    파일로 저장해 놓고 다른 시스템에 재 사용 하고 싶다면 다음과 같이 하면 된다.

    $ crontab cron-file.txt
    $ crontab -l
    AND

    Crontab은 리눅스에서 스케줄링하여 원하는 시간에 작업을 실행할 수 있는 아주 유용한 툴이다. 사용자가 적은 새벽 4시마다 디스크 백업을 하고 싶거나, 매일 00시에 아파치 로그파일을 압축 백업 하는 것과 같은 작업을 할 때 crontab은 매우 손쉽게 작업을 할 수 있다. 물론 Spring batch나 quartz 같은 것을 쓰면 분산처리나 로깅등에 유용하지만 간단한 실행파일을 하루 한번 돌리는데 그런 것들은 너무 거창하다.

     

    각 사용자별로 crontab 파일을 가지게 되며, 이를 수정해두면 cron job scheduler가 지정된 시간에 주기적으로 지정된 파일을 실행해준다. 순차적으로 여러가지 일을 해야 한다면 쉘스크립트를 만들어 실행하면 편리하다. Crontab은 스크립트가 실패해도 로그를 남기지 않으므로 실행할 스크립트에서 실행 결과를 파일로 로깅하도록 하는게 관리 면에서 좋다. 실패하면 메일이나 SMS 등이 오고록 하는 것도 관리 측면에서 유용하다.

     

    Crontab에서 실행할 스크립트를 등록하면서 많이 실수하는 것이 crontab에 등록하기전에 실행해보지 않는다는 것이다. 공들여 몇시간 만든 스트립트인데 문법오류나 실행권한없음 등의 이유로 실행되고 있지 않다가 수일에서 수개월이 지나서야  발견되는 경우를 흔히 볼 수 있다. 잘못 돌아갈 이유가 없어보여도 crontab 등록 후에 반드시 쉘스크립트나 실행 파일을 꼭 실행해보자.

     


    또 하나 주의 할 점이 있는데 crontab에 등록하는 스크립트는 여러번 반복 실행해도 에러가 나지 않도록 만들어야 한다. 하루에 꼭 한번씩 특정 시간에만 실행되도록 만들면 안된다. 매일 새벽 4시에 실행되야 하는데 출근해서 점심 먹고 알았다고 해보자. 그런데 이 스크립트는 4시에만 실행해야 하고 오후 1시에 실행하면 안된다고 하면 당신의 출근은 갑자기 늦어지고 저녁 데이트에 못갈수도 있다. 시간적 종속성이 있고 실행여부가 매우 중요하다면 시간이 들더라도 crontab 말고 Spring batch나 quartz를 사용하도록 하자.

     

     

    사용법

    현재 로그인한 사용자의 crontab 파일 수정

    $ crontab -e

     

    현재 로그인한 사용자의 crontab 파일 내용 보기

    $ crontab -e

     

    현재 로그인한 사용자의 crontab 파일 삭제

    (e와 r은 키보드에서 붙어 있어서 실수로 삭제 명령을 실행하는 경우가 있으니 주의)

    $ crontab -r

     

    Crontab 파일 문법

    분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-7) 실행명령(절대경로)

     

    예제

    # 매일 04:00 backup.sh 실행

    0 4 * * * $HOME/backup.sh

     

    # 매월 1일 2시 30분 report.sh 실행

    30 2 1 * * $HOME/report.sh

     

    # 짝수 시간 마다 monitoring.sh 실행

    0 0-23/2 * * * $HOME/monitoring.sh

     

    닉네임 사용

    자주 사용사는 것들은 아래와 같이 미리 정의된 닉네임을 사용할 수 있다.

    @reboot  : Run once, at startup.

    @yearly  : Run once a year, ie. "0 0 1 1 *".

    @annually  : Run once a year, ie. "0 0 1 1 *".

    @monthly : Run once a month, ie. "0 0 1 * *".

    @weekly  : Run once a week, ie. "0 0 * * 0".

    @daily   : Run once a day, ie. "0 0 * * *".

     

    @hourly  : Run once an hour, ie. "0 * * * *".

     

    실행내용 메일 받기

    Crontab 수정시 위에 MAILTO를 선언하면 실행 내용을 메일로 받을 수 있다.

    # dsmoon@daum.net 으로 메일 받기

    MAILTO="dsmoon@daum.net"

     


    # 메일 받지 않기

    MAILTO=""


     

     

     

    [출처] Crontab 설정|작성자 오라클

    AND

    1. vi 에디터의 모드

    - 명령모드 : 명령어를 실행할 수 있는 상태

    - 입력모드 : 원하는 문자열을 입력시킬 수 있는 상태

    - ESC : 입력모드에서 명령모드로 전환시킴

     

    2. 명령모드 명령어

    - i : 입력모드로 전환

    - a : 커서의 다음칸부터 입력

    - [n]x : n의 수만큼 글자삭제

    - [n]dd : n의 라인수만큼 삭제

    - u : 명령취소

    - [n]yy : n의 라인수만큼 복사

    - p : 붙여넣기

    - :wq : 저장후 종료

    - :w : 저장

    - :q : 종료

    - :q! : 저장하지않고 종료

     

    3. 화면스크롤

    - ctrl+f : 한화면 다음으로

    - ctrl+b : 한화면 이전으로

    - ctrl+d : 반화면 다음으로

    - ctrl+u : 반화면 이전으로

    - G : 파일의 맨 끝으로 이동

    - [n]G : n번째 라인으로 이동

    - :[n] : n번째 라인으로 이동

     

    4. 검색

    - / [검색단어] : 현재 위치에서 아래방향으로 검색단어를 검색

    - n : 이전 검색을 반복

    - ? [검색단어] : 현재 위치에서 위방향으로 검색단어를 검색

    - N : 이전 검색을 반복, 방향은 반대

     

    5. 치환

    - :[n],[m] s/[찾을 문자]/[치환할 문자]/[옵션]

    n번째 줄부터 m번째 줄까지 문자를 치환

    m이 $일경우 문서의 끝까지 치환

    옵션이 g 일 경우 찾은 문자를 모두 치환

    옵션이 c 일 경우 찾은 문자를 치환할 것이지 확인 메세지 출력

     

    6. 환경설정

    /usr/share/vim/vim61/vimrc_example.vim 을 자신의 홈 디렉토리에 vimrc로 복사하여 편집

    - set autoindent 자동 들여쓰기

    - set cindent C 파일 자동 들여쓰기

    - set number 행번호 표시

    - set backup 백업파일 자동생성

     

     

       출처: http://blog.naver.com/imju1196?Redirect=Log&logNo=20184691090

    AND

    리눅스에서 tar 명령어를 이용한 압축하기와 압축풀기에 대해서 간단하게 정리하려구요.

     

     

    1. tar.gz 형태로 압축하기


    명령어 : tar -czvf 압축파일명.tar.gz 압축할파일_또는_폴더1 압축할파일_또는_폴더2 압축할파일_또는_폴더3 ....


    예로 ./test 라는 폴더에 a1.jpg a2.jpg a3.jpg 라는 파일들을 압축하기 위해서는 다음과 같은 명령어를 통해서 가능하겠죠.


    명령어 : tar -czvf images.tar.gz ./test/a1.jpg ./test/a2.jpg ./test/a3.jpg


    그럼 images.tar.gz 이라는 압축된 파일이 생성될 것입니다.

     

    물론 폴더를 한 번에 압축할 수 있죠. 위의 ./test 폴더를 압축하겠다 하시면. 아래와 같은 명령어를 사용해야겠죠?


    명령어 : tar -czvf images.tar.gz ./test


    하나 더 추가로 a1.jpg와 a2.jpg는 압축하고, a3.jpg는 압축하기 싫을 때에는 ...


    명령어 : tar -czvf --exclude=./test/a3.jpg images.tar.gz ./test


    라고 명령어를 작성하시면 !! a3.jpg만 빼고 압축이 될 것입니다.

     

     

    2. tar.gz 압축풀기

     

    명령어 : tar -xzvf 압축되어있는파일명.tar.gz

     

    즉, 위에서 생성한 images.tar.gz 의 압측을 풀려면 다음과 같은 명령어를 사용하시면 되겠죠?

     

    명령어 : tar -xzvf images.tar.gz

     

     

    3. tar 압축풀기

     

    2번이랑 비슷한건데요. 이건 맨뒤에 gz이 안 붙어있죠?

     

    이건 옵션에서 z만 빼주시면 됩니다. 예로 good.tar 이라는 파일이 있다고 가정하고, 이 파일을 압축풀면.. 다음과 같은 명령어죠.

     

    명령어 : tar -xvf good.tar



     

    4. zip 압축풀기

     

    그냥 생각났으니깐.. 윈도우에서는 zip으로 압축 많이 사용하자나요. 알집의 영향이려나요?

     

    리눅스에서 zip 압축을 풀기위해서는 unzip 이라는 패키지가 설치되어 있어야 합니다.

     

    우분투를 깔면 자동으로 설치되는지는 제가 잘 모르겠구요. unzip 패키지가 없으면

     

    apt-get install unzip을 통해서 설치하시면 됩니다.

     

    그럼 zip 압축을 풀기위해서는요. 예로 happy.zip 이라는 파일이 있다고 가정하면

     

    명령어 : unzip happy.zip

     

    이러면 압축이 풀리겠죠? :)

     

    출처 :http://ngee.tistory.com/215

     

    AND