crontab이란?
crontab은 리눅스에서 주기적으로 실행할 명령어나 스크립트를 예약하는 데 사용하는 도구입니다.
백업, 로그 정리, 시스템 모니터링, 자동 업데이트 등 반복 작업을 자동화할 때 사용됩니다.
- cron은 데몬이며(cround), crontab은 이를 설정하기 위한 명령어 및 파일입니다.
- 사용자는 각자 자신의 crontab 파일을 가질 수 있고, 시스템 전체에 영향을 주는 root crontab도 존재합니다.
crontab 기본 문법
* * * * * 명령어
│ │ │ │ │
│ │ │ │ └─ 요일 (0~7) [일요일=0 또는 7]
│ │ │ └──── 월 (1~12)
│ │ └─────── 일 (1~31)
│ └────────── 시 (0~23)
└───────────── 분 (0~59)
예시:
| 주기 | 예시 crontab | 설명 |
| 매일 2시 | 0 2 * * * /home/user/backup.sh |
매일 새벽 2시에 백업 스크립트 실행 |
| 매일 5분 | */5 * * * * /usr/bin/sync | 5분마다 동기화 명령 실행 |
| 매주 월요일 1시 | 0 1 * * 1 /home.user/clean_logs.sh |
매주 월요일 로그 정리 |
crontab 사용 방법
1. crontab 파일 열기
crontab -e
2. 현재 사용자 crontab 보기
crontab -l
3. crontab 삭제
crontab -r
4. 특정 시간대 작업 예시
# 매일 자정 로그 파일 백업
0 0 * * * cp /var/log/syslog /home/user/syslog_backup_$(date +\%F).log
팁 : 로그 남기기
cron은 출력을 /dev/null로 무시하거나 로그를 저장할 수 있습니다.
0 0 * * * /home/user/script.sh >> /home/user/cron.log 2>&1
# >> : 표준 출력(성공 메시지) 로그 저장
# 2>&1 : 표준 에러도 같은 로그 파일로 저장
cron에서 자주 발생하는 실수
| 문제 | 원인 |
| 명령이 실행되지 않음 | 환경변수(PATH 등)가 부족함 |
| date 명령이 안됨 | 변수 확장을 위해 \로 이스케이프 필요 |
| 경로 오류 | 절대 경로를 써야 함 (예: ./script.sh -> /home/usr/script.sh) |
crontab의 환경과 PATH
cron은 사용자 로그인 없는 상태에서 실행되기 때문에, ~/.bashrc 등의 설정이 적용되지 않습니다.
따라서 스크립트 상단에 필요한 환경 변수를 직접 선언해주어야 할 수 있습니다.
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
crontab 접근 제어
- /etc/cron.allow > 해당 파일에 있는 사용자만 사용 가능
- /etc/cron.deny > 해당 파일에 있는 사용자는 사용 불가
(두 파일 모두 없다면 모든 사용자가 사용 가능)
마무리
crontab은 리눅스 시스템을 운영할 때 필수적인 도구 중 하나입니다.
주기적인 작업을 자동화하면 생산성이 향상되고, 수동 작업에서 발생할 수 있는 실수를 줄일 수 있습니다.
'linux' 카테고리의 다른 글
| 리눅스 로그 관리 - /var/log와 주요 로그 파일 정리 (0) | 2025.05.21 |
|---|---|
| crontab 실습 - 자동화 예제로 익히기 (1) | 2025.05.20 |
| journalctl로 시스템 로그 분석하기 - 리눅스 로그 관리의 핵심 (0) | 2025.05.14 |
| systemd와 systemctl을 활용한 서비스 관리 (0) | 2025.05.14 |
| 리눅스에서 자주 사용하는 명령어 & 문법 정리 -2 (2) | 2025.05.08 |