crontab이란?
크론탭(Crontab)이란?
크론탭(Crontab)은 리눅스 및 유닉스 계열 시스템에서 정기적으로 실행할 작업을 예약하는 도구이며, 주로 반복적인 작업(예: 백업, 시스템 점검, 로그 파일 정리 등)을 자동화하는 데 사용된다.
"크론(Cron)"은 시스템의 시간 기반 작업 스케줄러이고, "탭(Tab)"은 특정 작업의 예약 목록을 의미한다.
크론탭의 기본 구성은 다음과 같다.
- 시간 설정: 작업이 실행될 시간, 날짜, 요일 등을 지정
- 명령어 실행: 예약된 시간에 실행할 명령어를 지정
즉, 크론탭은 시스템에서 cron 서비스를 통해 관리되며, 이 서비스는 백그라운드에서 주기적으로 실행되어 지정된 작업을 수행한다.
크론탭 설치 방법
대부분의 경우, Red Hat 계열 배포판 (RHEL, CentOS, Fedora 등)에는 기본적으로 cron이 설치되어 있다. 만약 설치가 되어 있지 않다면, 다음 명령어로 cron 서비스를 설치할 수 있다.
1. cron 패키지 설치
sudo yum install cronie
cronie는 cron 서비스를 제공하는 패키지이며, 설치가 완료된 후, cron 서비스를 활성화하고 시작해야 한다.
2. cron 서비스 활성화 및 시작
sudo systemctl enable crond
sudo systemctl start crond
위 명령어는 시스템 시작 시 cron 서비스를 자동으로 시작하게 설정하고, 즉시 서비스를 시작한다.
크론탭 사용법
crontab 명령어는 각 사용자가 자신의 크론탭 파일을 관리할 수 있도록 한다. 아래의 파일은 사용자가 예약한 작업과 시간을 포함하고 있다.
1. 크론탭 편집
각 사용자는 자신만의 크론탭을 설정할 수 있으며, 크론탭을 편집하려면 다음 명령어를 사용한다.
crontab -e
위 명령어를 입력하면, 기본 편집기가 열리고, 여기서 작업을 예약할 수 있다.
2. 크론탭 형식
크론탭 파일에서 각 줄은 하나의 작업을 나타내며, 아래와 같은 시간 설정 형식을 따른다.
* * * * * /path/to/command
| | | | |
| | | | +---- 요일 (0 - 6) (일 = 0)
| | | +------ 월 (1 - 12)
| | +-------- 일 (1 - 31)
| +---------- 시간 (0 - 23)
+------------ 분 (0 - 59)
예시:
- 0 2 * * * /home/user/backup.sh
- 매일 오전 2시에 /home/user/backup.sh 스크립트를 실행
- 30 4 * * 1 /home/user/cleanup.sh
- 매주 월요일 오전 4시 30분에 /home/user/cleanup.sh 스크립트를 실행
- /5 *** * * * /path/to/command**
- 매 5분마다 /path/to/command를 실행
여기서 각 항목의 의미는 다음과 같다
- *: 모든 값
- 0-23: 시간
- 1-31: 일
- 1-12: 월
- 0-6: 요일 (0=일요일, 1=월요일, ..., 6=토요일)
3. 크론탭 파일 보기
crontab -l
4. 크론탭 삭제
crontab -r
특정 작업만 삭제하려면 crontab -e 명령어로 편집기를 열어 삭제할 수 있다.
크론탭 로그 확인
cron은 예약된 작업을 실행할 때 그 실행 결과를 로그로 기록한다. 이 로그 파일을 통해 작업의 실행 상태 및 결과를 추적할 수 있다.
1. 크론 로그 파일 위치
대부분의 리눅스 시스템에서는 cron의 로그가 /var/log/cron 파일에 저장된다.
sudo cat /var/log/cron
또는 로그 파일을 실시간으로 모니터링
sudo tail -f /var/log/cron
2. 로그 포맷
/var/log/cron에 기록되는 로그의 기본 포맷은 다음과 같다
Oct 15 04:05:01 localhost CROND[12345]: (root) CMD (/path/to/command)
Oct 15 04:10:01 localhost CROND[12346]: (root) CMD (/path/to/another-command)
- 시간: 작업이 실행된 시간
- 호스트명: 작업이 실행된 서버의 호스트명
- PID: cron 프로세스의 ID
- 사용자: 작업을 실행한 사용자 (예: root)
- CMD: 실행된 명령어
만약, 크론탭 작업이 정상적으로 실행되지 않는다면?
- 크론 서비스 상태 확인
- sudo systemctl status crond
- 작업 로그 확인
- /var/log/cron 파일에서 오류 메시지나 실행 결과를 확인
- 환경 변수 설정
* * * * * PATH=/usr/bin:/bin:/usr/sbin:/sbin /path/to/command
- 크론 작업은 제한된 환경에서 실행되기 때문에, 필요한 환경 변수가 설정되어 있지 않으면 작업이 실패할 수 있다. 예를 들어, PATH 환경 변수를 설정하여 명령어가 올바르게 실행되도록 할 수 있다.
- 스크립트 권한 확인
chmod +x /path/to/your-script.sh
- 실행하려는 스크립트에 실행 권한이 있는지 확인