본문 바로가기

Dev/Dev:: Linux

[Day007] Linux - 데몬(Daemon) 관리 및 예약

● 데몬 관리

  - 데몬(Daemon) : backgroung 실행으로 동작되는 서비스 프로그램

    => 요청이 발생하면 요청에 대한 처리를 하기 위한 프로그램

    ex) httpd  :  아파치 웹서버 데몬 

          - 홈페이지파일(HTML, CSS, JavaScript)등을 요청하면 파일을 검색하여 전송하는 역활 


  - 데몬은 요청에 의한 실행방법에 standalone 방식과 xinetd 방식으로 구분한다.


  1. standalone 방식의 데몬

    => 요청에 의해 실행되기 위해 항상 메모리에 상주(실행)되어 있는 데몬

    => 요청에 대한 응답속도가 빠르다.

    => 메모리 효율이 좋지 않다.

    => standalone 방식의 데몬 제어 : 메모리 항상 상주되도록 background 실행 하거나 상주된 프로그램 삭제 



       ]# /etc/rc.d/init.d/데몬제어파일 [start|stop|restart] 

       또는 ]# service 데몬제어파일 [start|stop|restart]   




    => 부팅시 데몬을 자동 실행 유무 제어

       ]# chkconfig --list     =>  데몬의 종류 및 런레벨에 따른 자동 실행 유무 확인


      ]# chkconfig --list | grep sshd

       sshd            0:해제  1:해제  2:활성  3:활성  4:활성  5:활성  6:해제


       ]# chkconfig --level 24 sshd off  => sshd에 대해 2번,4번 런레벨일 경우 자동 실행되지 않도록 제어

         ※ on : 활성     off : 해제     reset : 초기화


       ]# chkconfig --list | grep sshd

       sshd            0:해제  1:해제  2:해제  3:활성  4:해제  5:활성  6:해제


       ※ 새로 설치된 데몬은 service 및 chkconfig 명령에 의해 제어되도록 만들어 주는 것이 좋다.        

          ]# cp 데몬제어파일 /etc/rc.d/init.d/데몬제어파일   =>  service 명령을 이용해 제어

          ]# chkconfig --add 데몬제어파일   => chkconfig 명령에 의해 부팅시 데몬 제어 


       ※ chkconfig 명령에 의해 부팅시 제어 불가능 데몬이 존재하는 경우

          ]# vi /etc/rc.d/rc.local   =>  모든 데몬을 실행후 마지막 실행되는 파일 

          데몬실행명령        =>   추가




  2. xinetd(슈퍼데몬) 방식의 데몬 

    => 사용자 의한 요청에 발생할 경우 xinted 프로그램이 해당 서비스을 

       분석하여 필요한 데몬을 메모리에 로드(실행)하여 응답하는 방식

    => 요청이 발생할 경우에만 실행되는 데몬

    => standalone 방식보다는 응답속도가 느리다.

    => 메모리 효율이 좋다.

    => xinted 방식의 데몬 제어 : 슈퍼데몬에게 데몬 실행 권한을 부여하거나 삭제


      ]# chkconfig --list   => xinetd 기반의 데몬 확인 및 제어권한 유무 확인 




     ...

      xinetd 기반의 서비스:

              chargen-dgram:  해제      =>  활성 : 데몬실행 권한 O     해제 : 데몬실행 권한 X

              .... 


      ]# vi /etc/xinetd.d/rsync      =>  데몬파일 : 제어권한 및 환경설정 관련 내용이 존재하는 파일

      service rsync

      {

           disable = no             =>  제어권한 부여 유무 :  yes - 해제    no - 활성

           socket_type     = stream

           wait            = no

           user            = root

           server          = /usr/bin/rsync

          server_args     = --daemon

      log_on_failure  += USERID

      }



      ]# service xinetd restart   =>  슈퍼데몬 재실행(환경설정 변경되었기 때문)

      ]# chkconfig --list | grep rsync

            rsync:          활성





● 예약 데몬

  - 원하는 날짜 또는 시간에 원하는 명령이 실행되도록 기능을 제공하는 데몬

  - 원하는 명령이 읽기 관련 명령이거나 에러인 경우 결과를 메일로 전송


  1. atd  

    => 원하는 날짜 또는 시간에 명령들을 한번만 실행해 주는 데몬

    => atd 실행 : standalone 방식

     ]# ps -xa | grep atd   =>  실행 유무 확인

     3241 ?        Ss     0:00 


     ※ 만약 atd이 실행되어 있지 않은 경우

       ]# service atd start

       ]# chkconifg --level 2345 atd on


    => 예약 작업

       ]# at 시간       =>  예약 시간 설정

       at> 명령         =>  예약 시간에 실행될 명령 

       at> ...

       at> ^d           =>  예약 완료

       ]# atq           =>  예약 확인

       번호  시간

       ]# atrm 번호     =>  예약 취소


      ex) ]# date    =>  현재 날짜 및 시간 확인

          ]# rdate -s time.bora.net     =>  날짜 및 시간을 타임서버를 이용해 동기화

          ]# at 11:14             => 예약

          at> mkdir /root/atTest

          at> rm -rf *txt

          at> <EOT>             =>  ^d

          ]# atq

          1       2013-09-11 11:14 a root

          예약시간 되면 예약된 명령이 실행 된다.


          ]# ls -l     =>  atTest 디렉토리 생성 확인 및  *txt 삭제 확인

          ]# atq       =>  예약정보가 없다.(한번만 실행) 

          ]# date

          2013. 09. 11. (수) 11:17:17 KST

          ]# at 11:17

          at> ls

          at> <EOT>

          job 2 at 2013-09-12 11:17

          ]# atq    

          2       2013-09-12 11:17 a root    =>  내일 실행

          ]# atrm 2     =>  예약 취소

          ]# atq





  2. crond 

    => 원하는 시간 및 날짜마다 원하는 명령을 실행(명령을 반복 실행)

    => 데이타 백업을 하기 위해 사용

    => crond 실행 : standalone 방식


      ]# ps -xa | grep crond 

      3187 ?        Ss     0:00 crond


      ※crond이 실행되어 있지 않은 경우

        ]# service crond start

        ]# chkconfig --level 2345 crond on


      ※ crond는 대부분 실행되어 있다. => 시스템에서 crond을 이용하여 예약 작업을 실행하기 때문


 ]# vi /etc/crontab   => 시스템이 사용하는 예약정보를 저장한 파일 


    => crond를 활용한 예약 관리

      ]# crontab -e     =>  예약 생성, 변경, 삭제, 확인 : vi 편집기 이용

      분  시  일   월   요일    명령    => 반복적인 명령을 실행하도록 설정

      .....

 

       ※  ]# crontab -l     =>  예약 확인

            ]# crontab -r     =>  모든 예약 삭제 


    예시) ]# crontab -e

          30  *  *  *  *  /root/backup.sh   => 매월 매일 매시 30분에 명령 실행

          30  04  *  *  *  /root/backup.sh  => 매월 매일 04시 30분에 명령 실행

          30  04  *  *  5  /root/backup.sh  => 매월 매주 금요일 04시 30분에 명령 실행

          30  04  1  *  *  /root/backup.sh  => 매월 1일 04시 30분에 명령 실행

          30  04  1  1  *  /root/backup.sh  => 1월 1일 04시 30분에 명령 실행

          30  04  *  *  1-5  /root/backup.sh   =>  매월 매주 월요일부터 금요일까지 04시 30분에 명령 실행

          30  04  1  1-12/3  *   /root/backup.sh    => 1월부터 12월까지 3개월마다 1일 04시 30분에 명령 실행  

            ※ 요일  :  0 또는 7 - 일요일   1~6 - 월요일~토요일