Crontab 이 무엇인가?

반응형

crontab은 리눅스나 유닉스 계열 시스템에서 특정 명령어나 스크립트를 정해진 시간에 자동으로 실행하기 위한 스케줄러 도구입니다. 서버에서 정기적으로 백업, 로그 정리, 데이터 동기화, 알림 발송 등을 자동화할 때 자주 사용됩니다.


🧩 기본 개념

  • cron: 백그라운드에서 동작하는 데몬(demon)으로, 설정된 스케줄에 맞춰 작업을 수행합니다.
  • crontab (cron table): 사용자가 원하는 작업을 예약하는 “표(table)” 형식의 설정 파일입니다.
    각 사용자는 자신의 crontab 파일을 가질 수 있으며, 시스템 전체용(crontab -e root 등)도 존재합니다.

🕐 crontab 문법 구조

기본 구조는 다음과 같습니다:

* * * * * 명령어
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ └── 요일 (0-7, 0과 7은 일요일)
│ │ │ └──── 월 (1-12)
│ │ └────── 일 (1-31)
│ └──────── 시 (0-23)
└────────── 분 (0-59)

예시:

0 2 * * * /usr/local/bin/backup.sh

→ 매일 새벽 2시에 /usr/local/bin/backup.sh 스크립트를 실행.


⚙️ 주요 명령어

명령어 설명

crontab -e 현재 사용자의 crontab 편집
crontab -l 현재 사용자의 crontab 목록 보기
crontab -r 현재 사용자의 crontab 삭제
sudo crontab -e -u 사용자명 특정 사용자용 crontab 편집

🧭 스케줄 예시

스케줄 설명

* * * * * 매분마다
0 * * * * 매시 정각마다
0 0 * * * 매일 자정에
0 9 * * 1-5 월~금 오전 9시에
*/10 * * * * 10분 간격으로
0 22 * * 1,5 월요일과 금요일 밤 10시에

🧾 로그 및 디버깅

  • 크론 작업의 출력(stdout, stderr)은 기본적으로 이메일로 전송됩니다.
  • 로그 확인:
  • grep CRON /var/log/syslog
  • 출력 결과를 파일로 남기려면:
  • 0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

🚀 자주 쓰는 팁

  • 환경 변수 설정 (PATH가 다를 수 있음):
  • PATH=/usr/local/bin:/usr/bin:/bin
  • 특수 문자열을 이용한 간편 설정:예:
  • @reboot /home/ubuntu/start_service.sh
  • @reboot : 시스템 부팅 시 실행 @hourly : 매시간 @daily : 매일 @weekly : 매주 @monthly : 매월 @yearly : 매년

💡 예시 시나리오

  1. 매일 로그 백업→ 매일 새벽 1시에 로그 폴더를 압축해 백업.
  2. 0 1 * * * tar -czf /backup/logs_$(date +\%Y\%m\%d).tar.gz /var/log/
  3. 서버 재시작 감시
  4. @reboot echo "Server restarted at $(date)" >> /var/log/reboot.log

 

반응형