1. Cron, Crontab, Crontab(5)
- 리눅스에서 cron은 정기적인 작업(스케줄링 작업)을 자동으로 실행하기 위한 데몬이다.
- crontab은 이러한 작업을 관리하는 구성 파일이다.
- crontab(5)는 man 5 crontab 명령어를 통해 확인할 수 있는 crontab의 형식과 사용법에 대한 매뉴얼이다.
1.1 Cron
1.1.1 정의
- Cron은 유닉스 계열 운영체제에서 정기적으로 반복되는 작업을 자동화하기 위해 사용하는 스케줄링 도구이다.
- 크론 데몬(cron)은 항상 백그라운드에서 실행되며, crontab 파일에 정의된 작업을 지정된 시간에 실행한다.
1.1.2 주요 특징
- 자동화: 정해진 시간에 스크립트나 명령어를 자동 실행한다.
- 유연성: 분, 시간, 일, 월, 요일을 세밀하게 설정 가능하다.
- 백그라운드 실행: 사용자가 별도로 실행하지 않아도 데몬이 알아서 실행한다.
1.1.3 Cron 데몬 시작 및 상태 확인
# Cron 데몬 상태 확인
$ systemctl status cron
# Cron 데몬 시작
$ sudo systemctl start cron
# Cron 데몬 자동 실행 설정
$ sudo systemctl enable cron
1.2 Crontab
1.2.1 정의
- Crontab은 특정 사용자에 대한 크론 작업의 스케줄링 정보를 저장하는 구성 파일이다.
- 또한, 작업을 추가, 수정, 삭제할 때 사용하는 명령어 이름이기도 하다.
1.2.2 주요 명령어
# 현재 사용자 crontab 편집
$ crontab -e
# 현재 사용자 crontab 내용 확인
$ crontab -l
# 현재 사용자 crontab 삭제
$ crontab -r
# 다른 사용자 crontab 관리 (관리자 권한 필요)
$ sudo crontab -u 사용자명 -e
1.3 Crontab(5)
1.3.1 정의
- man 5 crontab 명령어로 확인할 수 있는 매뉴얼로, crontab 파일 형식과 구성 규칙에 대한 설명이 포함되어 있다.
1.4 Crontab 파일 형식
- Crontab 파일은 작업의 실행 시간을 설정하는 행과 실행할 명령어로 구성된다.
1.4.1 형식
분 시 일 월 요일 명령어
1.4.2 필드 상세 설명
필드 의미 허용 값
분 | 명령 실행 분 | 0-59 |
시 | 명령 실행 시간 | 0-23 |
일 | 명령 실행 일 | 1-31 |
월 | 명령 실행 월 | 1-12 |
요일 | 명령 실행 요일 | 0-7 (0 또는 7은 일요일) |
명령어 | 실행할 명령어 | 쉘 명령 또는 스크립트 경로 |
1.4.3 특수 기호
- *: 모든 값을 의미한다.
- ,: 여러 값을 지정한다.
- ``: 범위를 지정한다.
- /: 간격을 설정한다.
1.4.4 예제
설정 설명
0 5 * * * /path/to/script.sh | 매일 오전 5시에 /path/to/script.sh 실행 |
30 2 1 * * /path/to/backup.sh | 매월 1일 오전 2시 30분에 backup.sh 실행 |
0 */2 * * * /path/to/task.sh | 매 2시간마다 task.sh 실행 |
15 10 * * 1-5 /path/to/task.sh | 매주 월~금 오전 10시 15분에 task.sh 실행 |
0 8 1,15 * * /path/to/task.sh | 매월 1일과 15일 오전 8시에 실행 |
1.5 Crontab 특수 매개변수
- 특수한 예약어를 사용해 작업 시간을 간단히 설정할 수 있다.
예약어 의미 동일한 설정
@reboot | 시스템 부팅 후 한 번 실행 | - |
@yearly | 매년 1월 1일 00:00에 실행 | 0 0 1 1 * |
@monthly | 매월 1일 00:00에 실행 | 0 0 1 * * |
@weekly | 매주 일요일 00:00에 실행 | 0 0 * * 0 |
@daily | 매일 00:00에 실행 | 0 0 * * * |
@hourly | 매 시간 정각에 실행 | 0 * * * * |
1.6 Crontab 파일의 환경 설정
- crontab 파일은 작업 실행에 필요한 환경 변수를 지정할 수 있다.
1.6.1 주요 환경 변수
- SHELL: 명령을 실행할 쉘을 지정 (기본값: /bin/sh)
- PATH: 명령 실행 경로를 지정
- MAILTO: 작업 결과를 전송할 이메일 주소 (빈 값이면 이메일 전송하지 않음)
- HOME: 작업 실행 디렉터리 경로
1.6.2 예제
SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
MAILTO=admin@example.com
0 5 * * * /path/to/script.sh
'Wargame > bandit wargame' 카테고리의 다른 글
Bandit Level 22 → 23 (0) | 2025.01.06 |
---|---|
Bandit Level 21 → 22 (1) | 2025.01.06 |
Bandit Level 20 → 21 (2) | 2025.01.06 |
20 → 21 까지 필요한 명령어 (0) | 2025.01.06 |
Bandit Level 19 → 20 (0) | 2025.01.06 |