Rain WikiWindows · Linux · Android

cron과 crontab

서비스대부분의 Linux 배포판

cron은 일정에 따라 명령을 실행하는 고전적인 Unix 데몬입니다. 각 사용자는 crontab -e로 편집하는 crontab을 가지고 있으며, 각 줄에는 다섯 개의 시간 필드(분, 시, 일, 월, 요일)와 그 뒤에 실행할 명령이 옵니다. 시스템 작업은 /etc/crontab 및 /etc/cron.d/에 위치합니다.

1시간 필드

'30 2 * * *'는 매일 02:30을 의미하고, '*/10 * * * *'는 10분마다, '0 9 * * 1'은 매주 월요일 09:00을 의미합니다. 요일에서 0과 7은 일요일입니다.

2시스템 파일

/etc/cron.d/ 및 /etc/crontab의 파일에는 시간과 명령 사이에 사용자 이름이라는 추가 필드가 있습니다. /etc/cron.daily와 같은 디렉터리는 하루에 한 번 실행되는 스크립트를 보관합니다.

3일반적인 함정

cron은 최소한의 환경에서 실행됩니다: 전체 경로를 사용하거나 crontab에서 PATH를 설정하세요. 출력은 소유자에게 메일로 전송되거나 손실되므로 로그 파일로 리디렉션하세요. % 문자는 crontab 줄에서 특별한 의미를 가지므로 \%로 이스케이프해야 합니다.

4systemd 타이머

systemd 배포판에서는 저널 로깅, 무작위 지연, 누락된 실행의 사후 처리(Persistent=true) 기능을 갖춘 대안으로 .timer 유닛을 제공합니다.

일일 작업 추가 방법

  1. crontab을 엽니다: crontab -e
  2. 예를 들어 다음 줄을 추가합니다: 30 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
  3. 저장하고 종료합니다; cron이 자동으로 변경 사항을 반영합니다.
  4. 작업 목록을 확인합니다: crontab -l

주의 사항

  • crontab -r은 확인 절차 없이 전체 crontab을 삭제합니다.
  • 작업을 예약하기 전에 동일한 사용자로 명령을 수동으로 테스트하세요.

출처

  1. crontab(5) man7.org
  2. crontab(5) (Debian) manpages.debian.org
  3. systemd.timer(5) man7.org

최종 검토: