본문 바로가기
리눅스

[Linux] 리눅스 정기 작업 스케줄링: crontab

by ImirAin 2025. 10. 25.

 

crontab은 리눅스 및 유닉스 시스템에서 특정 시간이나 주기마다 프로그램을 자동으로 실행시키기 위해 사용되는 명령어입니다. 이는 윈도우의 '작업 스케줄러'와 비슷한 개념으로, 시스템 관리나 백업 등 반복적인 작업을 자동화하는 데 필수적입니다.


1. crontab 명령어 옵션

옵션 용도 설명
-l List 현재 사용자 계정에 예약된 작업 목록을 확인합니다.
-e Edit 현재 사용자 계정의 crontab 파일을 수정합니다.
-r Remove 현재 사용자 계정의 crontab 파일 전체를 삭제합니다. (주의 필요)
-u [사용자명] User 루트 관리자가 해당 사용자의 crontab 파일을 보거나, 삭제, 편집할 때 사용합니다.

2. crontab 주기 설정 형식

crontab은 5개의 시간 필드를 공백으로 구분하여 설정하며, 그 뒤에 실행할 명령어를 작성합니다.

# ----------------------------------------------------
# crontab 주기 설정 필드 형식
# ----------------------------------------------------
# ┌───────────── 분 (0 - 59)
# │ ┌─────────── 시간 (0 - 23)
# │ │ ┌───────── 일 (1 - 31)
# │ │ │ ┌─────── 월 (1 - 12)
# │ │ │ │ ┌───── 요일 (0 - 7, 일요일 = 0 또는 7)
# │ │ │ │ │
# * * * * * [실행할 명령어]
순서 필드 범위 설명
1 0 ~ 59 * 설정 시 1분 단위로 매번 실행
2 시간 0 ~ 23 * 설정 시 매시간 실행
3 1 ~ 31 * 설정 시 매일 실행
4 1 ~ 12 * 설정 시 매달 실행
5 요일 0 (일) ~ 6 (토) 또는 7 (일) * 설정 시 매일 실행
6 실행 명령어   절대 경로를 포함한 실행 명령

crontab 주기 설정 예시

# 매일 새벽 3시 30분에 백업 스크립트 실행
30 3 * * * /usr/bin/backup_script.sh

# 매주 월요일, 수요일, 금요일 오후 6시 0분에 시스템 정리 명령어 실행
0 18 * * 1,3,5 /usr/bin/clean_temp.sh

3. crontab 특수 문자 및 기호

시간 필드에 와일드카드나 특정 기호를 사용하여 복잡한 주기를 설정할 수 있습니다.

특수 문자 의미 예시
* 모든 값 * * * * * (1분마다 실행)
- 범위 0 10-12 * * * (매일 10시, 11시, 12시 0분에 실행)
, 특별한 값 0 10 * * 1,3,5 (월, 수, 금 10시 0분에 실행)
/ 단위 */10 * * * * (0분부터 매 10분마다 실행)
L Last 일 필드: 마지막 날 (L은 그 달의 마지막 날), 요일 필드: 마지막 요일 (7 또는 6, 즉 토요일)
W 가장 가까운 평일 10W * * * (매월 10일에 가장 가까운 평일(월~금)을 찾아 실행)

 중요: crontab 환경에서는 환경 변수가 일반 터미널 환경과 다를 수 있으므로, 실행 명령어는 항상 절대 경로( /usr/bin/backup_script.sh 등)를 지정하는 것이 안전합니다.