리눅스 Crontab 완벽 가이드: 개념부터 실전 예제까지

 

"매일 반복되는 서버 작업, 아직도 수동으로 하시나요?" 리눅스 자동화의 핵심, cron과 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 * * * * /home/check.sh >> /var/log/check.log 2>&1

* 설명: 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 핵심 요약

✨ 명령어: crontab -e (수정), -l (조회)
📊 시간 포맷: 분 시 일 월 요일 (5자리)
🧮 예제:
*/10 * * * * (10분마다 실행)
👩‍💻 디버깅: /var/log/syslog 또는 /var/log/cron 확인

자주 묻는 질문 ❓

Q: crontab -e를 쳤는데 에디터 선택 화면이 나와요.
A: 처음 실행 시 사용할 텍스트 에디터를 묻습니다. 초보자라면 가장 쉬운 nano를 선택(보통 1번이나 2번)하는 것을 추천합니다.
Q: > 와 >> 의 차이는 무엇인가요?
A: >는 파일을 매번 새로 덮어쓰고(Overwrite), >>는 기존 내용 뒤에 이어서 씁니다(Append). 로그를 계속 기록하려면 >>를 써야 합니다.
Q: 요일 설정에서 0과 7은 무엇인가요?
A: 둘 다 일요일을 의미합니다. 1은 월요일, 6은 토요일입니다.

처음에는 별표(*) 다섯 개가 암호처럼 보일 수 있지만, 익숙해지면 crontab만큼 든든한 비서도 없습니다. 오늘 정리해 드린 명령어와 예제들을 활용해서 반복되는 업무로부터 해방되시길 바랍니다. 더 궁금한 점이 있다면 언제든 댓글로 물어봐 주세요~ 😊

 

댓글

이 블로그의 인기 게시물

한국식 비건 식단, 과연 건강할까? 팩트 체크와 쉬운 레시피

한반도 동해 해역 단층 연계와 일본 지진 연쇄 가능성

고혈압 진단 기준과 실비보험 청구 가능한 항목