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 유닛을 제공합니다.
일일 작업 추가 방법
- crontab을 엽니다:
crontab -e - 예를 들어 다음 줄을 추가합니다: 30 2 * * *
/usr/local/bin/backup.sh>>/var/log/backup.log2>&1 - 저장하고 종료합니다; cron이 자동으로 변경 사항을 반영합니다.
- 작업 목록을 확인합니다:
crontab -l
주의 사항
crontab -r은 확인 절차 없이 전체 crontab을 삭제합니다.- 작업을 예약하기 전에 동일한 사용자로 명령을 수동으로 테스트하세요.
관련 문서
- systemd 유닛과 systemctlsystemd 유닛이 무엇인지, 일반적인 유닛 유형은 무엇인지, 그리고 systemctl을 사용하여 서비스를 시작, 중지, 활성화 및 검사하는 방법을 설명합니다.
- logrotatelogrotate의 기능, /etc/logrotate.conf 및 /etc/logrotate.d에서의 설정 작동 방식, 그리고 규칙을 안전하게 테스트하는 방법을 설명합니다.
- journalctl과 systemd 저널journalctl로 로그를 읽고, 저널이 차지하는 용량을 확인하며 --vacuum 옵션으로 안전하게 줄이는 방법입니다.
출처
- crontab(5) man7.org
- crontab(5) (Debian) manpages.debian.org
- systemd.timer(5) man7.org
최종 검토: