리눅스 Crontab 완벽 가이드: 개념부터 실전 예제까지
📋 목차
서버를 관리하다 보면 매일 새벽에 로그를 백업하거나, 주기적으로 특정 스크립트를 실행해야 할 일이 생깁니다. 매번 알람을 맞추고 직접 명령어를 입력할 수는 없는 노릇이죠. 😅 이럴 때 우리를 구원해 줄 리눅스의 강력한 도구가 바로 cron(크론)입니다.
하지만 처음 접하는 분들은 `cron`은 뭐고 `crontab`은 또 뭔지, 별(`*`)표는 어떻게 찍어야 하는지 헷갈리기 마련입니다. 오늘은 리눅스 작업 스케줄러의 정석, cron과 crontab의 개념부터 실무에서 바로 써먹을 수 있는 예제까지 아주 쉽게 풀어드릴게요. 이제 반복 작업은 컴퓨터에게 맡기고 칼퇴근하세요! 🚀
cron과 crontab, 도대체 뭐가 다를까? 🤔
비슷해 보이는 두 단어, 하지만 역할은 명확히 다릅니다. 쉽게 비유하자면 cron은 '알람 시계' 자체이고, crontab은 알람 시간을 적어두는 '메모장'이라고 볼 수 있습니다.
* cron (Daemon): 백그라운드에서 항상 실행되면서, 시간이 되면 작업을 수행하는 프로세스(데몬)입니다.
* crontab (Table): cron이 언제, 무엇을 할지 기록해 둔 설정 파일, 또는 그 파일을 관리하는 명령어입니다.
즉, 우리는 `crontab` 명령어를 통해 할 일을 적어두면, `cron` 데몬이 알아서 그 시간에 맞춰 일을 처리해 주는 구조입니다. 리눅스뿐만 아니라 유닉스 계열 OS라면 어디서든 사용할 수 있는 표준 스케줄러죠.
crontab 명령어 완벽 분해 (시간 설정의 비밀) ⏱️
crontab을 작성하려면 먼저 편집 명령어를 알아야겠죠? 터미널에서 다음 명령어만 기억하세요.
crontab -e: 설정 파일 편집 (Edit) - 가장 많이 씁니다!crontab -l: 현재 설정된 목록 확인 (List)crontab -r: 설정 삭제 (Remove) - ⚠️ 주의해서 사용하세요!
시간 설정 5필드 규칙
crontab 파일 내부는 5개의 시간 필드와 1개의 명령어 필드로 구성됩니다. 순서대로 분-시-일-월-요일입니다.
| 순서 | 의미 | 범위 | 비고 |
|---|---|---|---|
| 1 | 분 (Minute) | 0 ~ 59 | |
| 2 | 시 (Hour) | 0 ~ 23 | |
| 3 | 일 (Day) | 1 ~ 31 | |
| 4 | 월 (Month) | 1 ~ 12 | |
| 5 | 요일 (Week) | 0 ~ 7 | 0과 7은 일요일, 1은 월요일 |
*
* : 모든 값 (매분, 매시, 매일...)*
/ : 주기 (예: */10은 10분마다)*
- : 범위 (예: 1-5는 1부터 5까지)*
, : 특정 값 지정 (예: 1,15는 1일과 15일에만)
바로 복붙해서 쓰는 실전 예제 모음 📝
백문이 불여일견! 가장 자주 쓰이는 설정 패턴들을 모았습니다. 복사해서 시간만 조금 수정해 사용하세요.
💻 자주 쓰는 스케줄링
- 매분 실행:
* * * * * /home/script.sh - 매일 새벽 4시 실행:
0 4 * * * /home/script.sh - 매주 월요일 오전 9시 실행:
0 9 * * 1 /home/script.sh - 매월 1일 새벽 3시 실행:
0 3 1 * * /home/script.sh - 5분마다 실행:
*/5 * * * * /home/script.sh
🔧 로그 남기기 (필수!)
스크립트가 실행됐는지 확인하려면 반드시 로그를 남겨야 합니다.
* 설명: 10분마다 실행하고, 표준 출력(1)과 에러(2)를 모두 log 파일에 덧붙여라(>>).
실행이 안 된다면? 로그 확인 및 디버깅 🕵️♂️
분명 설정은 완벽한데 작동하지 않을 때가 있습니다. 이럴 땐 당황하지 말고 시스템 로그를 확인해야 합니다.
로그 확인 명령어
- 우분투(Ubuntu)/데비안:
grep CRON /var/log/syslog - 센토스(CentOS)/레드햇:
cat /var/log/cron - 실시간 확인:
tail -f /var/log/syslog | grep CRON
1. 경로 문제: 스크립트 파일이나 명령어는 절대 경로(예:
/usr/bin/python3)로 적었나요?2. 권한 문제: 스크립트 파일에 실행 권한(
chmod +x)이 있나요?3. 환경 변수: cron은 사용자의 환경 변수를 다 가져오지 않습니다. 필요한 변수는 스크립트 내에 명시해야 합니다.
Linux crontab 핵심 요약
자주 묻는 질문 ❓
>는 파일을 매번 새로 덮어쓰고(Overwrite), >>는 기존 내용 뒤에 이어서 씁니다(Append). 로그를 계속 기록하려면 >>를 써야 합니다.처음에는 별표(*) 다섯 개가 암호처럼 보일 수 있지만, 익숙해지면 crontab만큼 든든한 비서도 없습니다. 오늘 정리해 드린 명령어와 예제들을 활용해서 반복되는 업무로부터 해방되시길 바랍니다. 더 궁금한 점이 있다면 언제든 댓글로 물어봐 주세요~ 😊

댓글
댓글 쓰기