[Linux]서비스 관리

BoongDev·2023년 3월 14일
0

Linux

목록 보기
3/3
post-thumbnail

데몬과 서비스

데몬

리눅스 환경에서 시스템이 초기화가 끝난 후 init 이라는 특별한 프로그램에 의해 자발적으로 백그라운드에서 실행되는 프로그램을 의미한다.

멀티태스킹 운영체제에서 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 의미한다. ex) Windows OS 의 Service

일반적으로 백그라운드에서 작동하는 프로세스 라는 의미로 통용된다.

리눅스에서 데몬은 syslogd, httpd 와 같이 프로그램 이름 끝에 d 가 붙는다. 상시 실행되며 다음과 같은 일을 함

  • 하드웨어 장치 관리
  • 보조 기억장치와 디렉토리의 연결(마운트)
  • 네트워크를 통한 프로세스간 통신(소켓)
  • 애플리케이션 수준의 서비스 제공 → 보통 서비스라고 간략하게 줄여서 부름
    • 같은 프로그램을 지칭할 때 서비스와 데몬으로 번갈아가면서 부를 수 있는데, 운영체제의 관점은 ‘데몬’, 사용자 관점에서는 ‘서비스’ 라고 부를 따름이다.

대표적인 데몬 : Web Server (httpd)

웹 페이지에 접근하고 결과를 얻으려면, 웹 페이지를 제공하는 프로세스가 상시 실행되어야 할 것이고 이러한 프로그램을 웹 서버라고 한다. 일반적으로 백그라운드에서 작동되므로, 데몬이라고 부를 수 있다.

httpd 실습

시나리오

  • 간단한 HTML 파일 생성
  • curl 유틸리티를 통해 해당 주소로 접속
  • 과정 코드
    # index.html 작성
    $ echo "<html><body><h1> 첫 HTML 페이지 </h1></body></html>" > index.html
    
    # 웹 서버 실행, 8888 포트 열기
    $ busybox httpd -h . -p 8888
    
    # 웹 서버 접속
    $ curl http://localhost:8888
    
    # 프로세스 확인 명령을 통해 데몬이 실행중인지를 확인
    $ ps aux | grep httpd
    
    # PID 를 이용해 프로세스를 죽인다
    $ kill -9 PID
    
    # 웹 서버 다시 접속, 실패해야 정상
    $ curl http://localhost:8888

실습결과

실습 결과

  • ※ busybox 란?
    • UNIX 명령해 유틸리티의 기능을 하나의 실행 파일 안에 통합시킨 소프트웨어다
    • 작은 바이너리 속 350 여 개의 기능이 들어가 있어 임베디드 환경에서 많이 사용된다.
    • 작은 용량으로 기능들이 간략화 되어 있어 빠진 기능들이 몇 있다.
    • busybox는 각종 유틸리티를 담은 일종의 “스위스 군용 칼”과 같은 리눅스용 애플리케이션으로, 아주 단순한 기능을 가진 웹 서버(httpd)를 포함하고 있습니다.
    • httpd는 기본적으로 데몬으로 실행되며, 위의 실습처럼 백그라운드에서 돌면서, 목적에 맞는 기능(여기서는 웹 서버의 역할)을 수행합니다.

대표적인 데몬 : cron

cron 데몬은 스케쥴에 따라 명령을 실행하는 도구이다.

cron 실습

시나리오

  • 매 분마다 날짜와 시스템 가동시간을 파일에 저장하는 명령을 실행
  • 실습 코드
$ crontab -e
# 에디터 선택 대화창이 나온다.

# 에디터 선택 후 에디터가 열리면 맨 아랫줄에 입력
* * * * * echo $(/bin/date) - $(/usr/bin/uptime) >> ~/uptime.log

# 파일을 저장하고 닫는다.
  • date 명령의 출력, uptime 명령 출력을 uptime.log 파일에 쌓는다
  • * * * * * 는 매 분을 뜻한다.
  • 💡반드시 crontab 을 초기화 할 것
$ crontab -r
$ crontab -l
no crontab for 사용자이름
# 마지막 줄이 출력되야 정상적으로 초기화 된다.

systemctl : 서비스 관리

데몬 확인하기

systemctl : 모든 데몬의 목록 출력, 서비스 목록만 볼려면 --type=service 옵션 사용 (시스템 관리자들을 보통 서비스에 집중하므로)

별도의 실행 없이 cron.service 가 실행되어진 것을 확인 할 수 있다

별도의 실행 없이 cron.service 가 실행되어진 것을 확인 할 수 있다

systemctl

명령어기능
systemctl list-unit-files설치된 유닛(데몬) 목록 출력
systemctl enable 부팅시 유닛 활성화
systemctl disable 부팅시 유닛 비활성화
systemctl start 유닛 즉시 활성화
systemctl stop 유닛 즉시 비활성화
systemctl restart 유닛 즉시 재시작(비활성화 후 활성화)
systemctl status 유닛 상태와 최근 로그 조회
  • 시스템 관리자의 주 사용 목적
    • 서비스의 상태 파악
    • 정상 작동 파악
    • 멈춘 경우 멈춰있는 이유 파악
      • 최근 출력 로그를 읽는 것은 매우 중요합니다. Active가 failed일 경우, 로그에 그 원인이 반드시 존재합니다.
    • 재시작
profile
욕심 많은 주니어 개발자입니다.

0개의 댓글