데몬
리눅스 데몬은 백그라운드에서 실행되는 프로그램으로, 시스템 시작시 자동으로 실행되며 특정한 서비스를 제공합니다. 다음은 몇 가지 리눅스 데몬의 예시입니다.
- Apache HTTP Server(httpd) - 웹 서버를 제공하는 데몬으로, HTTP 요청을 처리하여 웹 페이지를 제공합니다.
- SSHD - SSH 접속을 제공하는 데몬으로, 원격으로 서버에 접속할 때 사용됩니다.
- Cron - 예약된 작업을 실행하는 데몬으로, 주기적으로 실행되는 작업을 스케줄링합니다.
- MySQL - 데이터베이스 서버를 제공하는 데몬으로, 데이터베이스 관리를 위해 사용됩니다.
- Docker - 컨테이너 가상화를 제공하는 데몬으로, 애플리케이션을 격리된 환경에서 실행할 수 있습니다.
이외에도 다양한 리눅스 데몬들이 존재하며, 대부분은 시스템 관리자나 개발자 등이 필요에 따라 직접 구현할 수도 있습니다.
다음은 cron의 예시입니다.
- 매일 1시에 /home/user/scripts/run_backup.sh 스크립트를 실행하기 위해 cron을 설정하는 방법입니다.
0 1 * * * /home/user/scripts/run_backup.sh
- 매주 월요일 2시에 /home/user/scripts/run_cleanup.sh 스크립트를 실행하기 위해 cron을 설정하는 방법입니다.
0 2 * * 1 /home/user/scripts/run_cleanup.sh
- 매달 1일 3시에 /home/user/scripts/run_report.sh 스크립트를 실행하기 위해 cron을 설정하는 방법입니다.
0 3 1 * * /home/user/scripts/run_report.sh
위 예시에서 각 필드의 의미는 다음과 같습니다.
- 첫 번째 필드: 분 (0-59)
- 두 번째 필드: 시간 (0-23)
- 세 번째 필드: 일 (1-31)
- 네 번째 필드: 월 (1-12)
- 다섯 번째 필드: 요일 (0-7, 0과 7은 일요일)
만약 스크립트나 명령어를 실행하는데 필요한 환경 변수나 PATH가 다를 경우, cron 설정 파일의 맨 위에 적어놓는 환경 변수 설정 부분에 추가해주어야 합니다.
systemctl
systemctl은 시스템 관리를 위한 유틸리티로, 리눅스 시스템에서 서비스, 소켓, 디바이스, 마운트 포인트 등의 유닛을 관리할 수 있습니다. 이는 systemd라는 시스템 및 서비스 관리 프레임워크의 일부입니다.
systemctl 명령어는 다양한 옵션을 가지고 있으며, 주요 옵션은 다음과 같습니다.
- start: 유닛을 시작합니다.
- stop: 유닛을 중지합니다.
- restart: 유닛을 재시작합니다.
- enable: 유닛을 부팅 시 자동 시작하도록 설정합니다.
- disable: 유닛을 부팅 시 자동 시작하지 않도록 설정합니다.
- status: 유닛의 현재 상태를 확인합니다.
예를 들어, httpd 서비스를 시작하려면 다음과 같이 입력합니다.
$ systemctl start httpd
서비스 목록보기
$ systemctl --type=service