Linux,Unix,BSD

[linux] Crontab: 시스템 작업 자동화의 핵심 도구

채윤아빠 2021. 6. 9. 11:40

1. Crontab 개요

Crontab은 리눅스 및 유닉스 계열 운영체제에서 주기적인 작업을 자동으로 실행하기 위한 시스템 도구입니다.

시스템 관리자와 개발자들에게 매우 유용한 스케줄링 도구로, 반복적이고 예약된 작업을 손쉽게 관리할 수 있게 해줍니다.

2. Crontab의 기본 구조

Crontab 항목은 다음과 같은 6개의 필드로 구성됩니다:

* * * * * command_to_execute
│ │ │ │ │
│ │ │ │ └─── 요일 (0 - 7) (일요일은 07 모두 가능)
│ │ │ └──── 월 (1 - 12)
│ │ └───── 일 (1 - 31)
│ └────── 시간 (0 - 23)
└─────── 분 (0 - 59)

와일드카드 및 특수 문자 사용법

  • *: 모든 값
  • ,: 여러 값 지정
  • -: 범위 지정
  • /: 간격 지정

3. Crontab 사용 방법

3.1 Crontab 확인

# 현재 사용자의 크론탭 목록 확인
crontab -l

3.2 Crontab 편집

# 크론탭 편집
crontab -e

4. 다양한 주기별 Crontab 예시

4.1 매분 실행

* * * * * /path/to/script.sh

4.2 매시간 실행

0 * * * * /path/to/hourly_script.sh

4.3 매일 자정에 실행

0 0 * * * /path/to/daily_backup.sh

4.4 평일 매일 실행

0 9 * * 1-5 /path/to/weekday_script.sh

4.5 매월 마지막 날 실행

0 0 28-31 * * test $(date -d '+1 day' +\%d) -eq 1 && /path/to/monthly_script.sh

5. 주석 추가하기

Crontab 파일에 주석을 추가하여 가독성을 높일 수 있습니다:

# 매일 자정 데이터베이스 백업
0 0 * * * /usr/local/bin/backup_database.sh

# 매주 일요일 시스템 청소
0 0 * * 0 /usr/local/bin/system_cleanup.sh

6. 로깅 방법

6.1 표준 출력 및 오류 로깅

* * * * * /path/to/script.sh >> /var/log/mycron.log 2>&1

6.2 크론 로그 확인

# 시스템 크론 로그 확인
sudo tail -f /var/log/syslog | grep CRON

7. Crontab 백업 방법

7.1 전체 사용자 크론탭 백업

# 모든 사용자의 크론탭 백업
for user in $(cut -f1 -d: /etc/passwd); do 
    crontab -u $user -l > /backup/crontab_$user.bak 2>/dev/null; 
done

7.2 개인 크론탭 백업

# 현재 사용자 크론탭 백업
crontab -l > ~/crontab_backup.txt

8. 주의사항

  • 절대 경로 사용을 권장합니다.
  • 스크립트에 실행 권한을 부여해야 합니다.
  • 환경 변수가 다를 수 있으므로 전체 경로 사용을 추천합니다.

맺음말

Crontab은 강력하고 유연한 작업 스케줄링 도구입니다. 시스템 관리와 자동화의 핵심 요소로, 올바르게 사용하면 시간과 노력을 크게 절약할 수 있습니다.


728x90
반응형