1. Crontab 정의
crontab
은 리눅스 및 유닉스 계열 운영체제에서 주기적으로 명령어나 스크립트를 실행하기 위해 사용하는 스케줄링 도구입니다.cron
은 시스템의 백그라운드에서 동작하며, 정해진 시간과 주기에 따라 사용자나 시스템의 작업을 자동으로 수행합니다.crontab
은 이러한 작업을 설정하고 관리하는 데 사용되는 파일 또는 명령어를 의미합니다.- 주로 시스템 Batch 시스템에 사용되며
crontab
을 사용하면 시스템 관리 및 반복 작업을 자동화 할 수 있습니다.
1.1. 1. 기본 개념과 구조
crontab
파일에는 작업 스케줄과 실행할 명령어가 포함되어 있습니다.
1 | * * * * * command |
*
(별표)는 모든 가능한 값을 의미합니다.- 숫자는 해당 시간/날짜에 작업을 실행함을 의미합니다.
command
는 실행할 명령어 또는 스크립트를 나타냅니다.
예를 들어, 0 2 * * * /path/to/backup.sh
는 매일 오전 2시에 backup.sh
스크립트를 실행합니다.
1.2. 2. crontab 명령어
crontab
명령어를 사용하여 작업을 관리할 수 있습니다.
crontab -e
: 현재 사용자의crontab
파일을 편집합니다. 기본 텍스트 편집기가 열리며, 여기서 작업을 추가하거나 수정할 수 있습니다.crontab -l
: 현재 사용자의crontab
을 목록으로 표시합니다.crontab -r
: 현재 사용자의crontab
을 삭제합니다.crontab -u username -e
: 다른 사용자의crontab
을 편집합니다(관리자 권한 필요).
1.3. 3. 스케줄 형식 예시
0 0 * * *
: 매일 자정(00:00)에 실행.*/5 * * * *
: 매 5분마다 실행.0 9 * * 1-5
: 월요일부터 금요일까지 매일 아침 9시에 실행.0 0 1 * *
: 매월 1일 자정에 실행.
1.4. 4. 특별 문자열
crontab
은 특별 문자열을 지원하여 일반적인 스케줄링을 더 쉽게 설정할 수 있습니다.
@reboot
: 시스템이 부팅될 때마다 실행.@daily
또는@midnight
: 매일 자정에 실행.@hourly
: 매 시간 정각에 실행.@weekly
: 매주 일요일 자정에 실행.@monthly
: 매월 1일 자정에 실행.@yearly
또는@annually
: 매년 1월 1일 자정에 실행.
1.5. 5. 환경 변수와 출력
crontab
에서 사용되는 명령어는 사용자의 환경 변수를 따릅니다. 필요 시 명시적으로 설정해야 합니다.
1 | 0 2 * * * /path/to/script.sh > /dev/null 2>&1 |
위 예시에서 > /dev/null 2>&1
는 모든 출력과 오류를 무시할 수 있습니다. 특히 find 명령어를 사용할때 Permission 권한으로 인한 여러 출력오류를 나타나지 않게 할 수 있습니다.
주로 다양한 배치시스템이 백오피스나 매일, 매주, 매달마다 집계가 필요한 시스템 쿼리를 사용해야할 경우, crontab을 사용하면 효율적으로 관리가 가능합니다.