ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Linux Daemon ( 1 / x )
    카테고리 없음 2016. 7. 22. 22:30
    데몬(Daemon)의 개념

    + 일반적인 프로그램은 하드디스크에 설치되며, 실행을 위해 하드디스크 섹터를 검색하고 검색한 부분을 읽어오게 된다.
    + 하드디스크에서 읽어오는 것은 CPU와 RAM에 비해 상당히 느리다
    + cpu와 하드디스크 사이에 RAM이라는 공간에 실행중인 프로세스를 복사하여 실행시킨다.
    + 이렇게 하여 속도를 높여 사용하는데 이것을 보고 프로세스를 RAM에 상주시킨다고 한다.
    + 이러한 프로세스는 3가지 종류가 있는데 대화형, 배치형, 데몬형이 있다.
    + 대화형은 우리가 흔히 쓰는 프로세스를 말한다.
    + 배치형은 내가 명령을 입력장치로 넣지 않아도 알아서 실행되며 시작 프로그램을 예로 들 수 있다.
    + 데몬형은 실행되어도 화면에 출력이 안 되며 Background 형태로 돌아간다.
    + 실행되는지 아닌지를 모른다. 윈도우에서는 서비스, 리눅스에서는 데몬이라 불린다. 



    데몬(Daemon)의 종류

     





    Standalone

    + 항상 준비 되어있는 프로세스들을 의미하며 항상 실행 중에 있기 때문에 메모리에 상주되어 있따.
    + 응답 속도가 빠르지만 메모리에 부하를 준다.
    +  init.d sendmail. apache, mysql, name server, nfs 등이 있다. 



    Xinetd

    + xinetd 자체는 항상 준비되어 있는 프로세스이며 Standalone 방식인 반면
    + xinetd의 내부는 xinetd 방식이다.
    + xinetd에 요청이 들어오면 xinetd가 자신에게 종속되어 있는 프로그램을 실행시키며 처리가 끝나면 다시 휴면상태로 되돌린다.
    + xinetd를 부모라고 생각하고, 그 안에 포함되어 있는 프로그램들을 자식이라고 생각한다면 요청 들어오면 부모가 깨워서 밖에 내보내는 것으로 볼 수 있다.
    + 응답 처리속도도 느리지만 요청이 들어오지 않을 경우 휴면상태이므로 메모리를 차지하지 않는다.
    + xinetd에는 블랙리스트 시스템이 들어 있으며 xinetd가 좋지 못한 요청이라고 간주하면 프로그램들을 밖으로 내보내지 않는다. (xinetd.d, telnet, PoP3등이 존재.









    서비스 관리

    + 시스템이 부팅될 때 많은 서비스 데몬들이 실행되는데 불필요한 데몬도 있다.
    + 불필요한 데몬들은 시스템 자원을 낭비하므로 필요 없는 서비스는 실행되지 않도록 ntsysv나 chkconfig 명령을 사용하여 설정할 수 있다.
    + 현재 실행중인 데몬을 제어하려면 service 명령어나 /etc/rc.d/init.d 에 있는 실행스크립트를 이용하여 제어할 수 있다.
    #ntstsv : 커서로 이동하며 스페이스 바를 누르면 선택/해제가 가능 





    #chkconfig [옵션] 데몬 [상태] : 시스템을 부팅할 때 런레벨에 따라 자동으로 실행되는 데몬들을 확인할 수 있고 특정 서비스를 추가, 수정할 수 있음

    옵션 —level : 적용할 런레벨 선택 / —add 데몬 추가 / —del 데몬 삭제 / —list 목록 출력 





    #service [데몬] [상태] : 현재 실행주인 데몬을 제어 
    옵션 start : 데몬을 실행 / stop : 데몬을 중지 / restart : 데몬을 재시작 / status : 데몬의 상태 









    좀비 프로세스와 퇴치 방법 




    + 프로세스의 상태를 확인하다보면 좀비 상태인 프로세스들을 확인할 수 있다.
    + 좀비 프로세스는 실행이 완료 되었음에도 불구하고, 소멸되지 않은 프로세스를 말하며  main함수가 반환되면 소멸한다.
    + 소멸되지 않았다는 것은 프로세스가 사용한 리소스가 메모리 공간에 여전히 존재한다는 의미이다.
    + 좀비 프로세스의 생성은 자식 프로세스가 종료디모녀서 반환하는 상태 값이 부모 프로세스에게 전달되지 않으면 해당 프로세스는 소멸되지 않고 좀비가 되는 것이 원인이다.
    + 프로그램을 작성할때 반환하는 상태 값을 받을 수 있도록 wait(), waitpdi() 함수를 사용함으로써 해결할 수 있다.



Designed by Tistory.