리눅스 환경에서 시스템이 초기화가 끝난 후 init
이라는 특별한 프로그램에 의해 자발적으로 백그라운드에서 실행되는 프로그램을 의미한다.
멀티태스킹 운영체제에서 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 의미한다. ex) Windows OS 의 Service
일반적으로 백그라운드에서 작동하는 프로세스 라는 의미로 통용된다.
리눅스에서 데몬은 syslogd
, httpd
와 같이 프로그램 이름 끝에 d
가 붙는다. 상시 실행되며 다음과 같은 일을 함
웹 페이지에 접근하고 결과를 얻으려면, 웹 페이지를 제공하는 프로세스가 상시 실행되어야 할 것이고 이러한 프로그램을 웹 서버라고 한다. 일반적으로 백그라운드에서 작동되므로, 데몬이라고 부를 수 있다.
시나리오
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
실습 결과
cron 데몬은 스케쥴에 따라 명령을 실행하는 도구이다.
시나리오
$ crontab -e
# 에디터 선택 대화창이 나온다.
# 에디터 선택 후 에디터가 열리면 맨 아랫줄에 입력
* * * * * echo $(/bin/date) - $(/usr/bin/uptime) >> ~/uptime.log
# 파일을 저장하고 닫는다.
date
명령의 출력, uptime
명령 출력을 uptime.log 파일에 쌓는다* * * * *
는 매 분을 뜻한다.0 20 * * *
이다$ crontab -r
$ crontab -l
no crontab for 사용자이름
# 마지막 줄이 출력되야 정상적으로 초기화 된다.
systemctl
: 모든 데몬의 목록 출력, 서비스 목록만 볼려면 --type=service
옵션 사용 (시스템 관리자들을 보통 서비스에 집중하므로)
별도의 실행 없이 cron.service 가 실행되어진 것을 확인 할 수 있다
명령어 | 기능 |
---|---|
systemctl list-unit-files | 설치된 유닛(데몬) 목록 출력 |
systemctl enable | 부팅시 유닛 활성화 |
systemctl disable | 부팅시 유닛 비활성화 |
systemctl start | 유닛 즉시 활성화 |
systemctl stop | 유닛 즉시 비활성화 |
systemctl restart | 유닛 즉시 재시작(비활성화 후 활성화) |
systemctl status | 유닛 상태와 최근 로그 조회 |