반응형
728x170
목적
- 정기적으로 명령을 실행함
- Time based Job Scheduling
- systemd의 timer와 같은 개념(timer는 초 단위로도 실행 가능, 데몬 없이 서비스로 실행)
**일회성 예약 작업은 "at"으로 실행
관련 파일 경로
/etc/crontab
이러한 crontab 파일들은 시간,일,주,월 단위로 나누어져 관리됨
Cron Cycle
일반적으로 하는 작업(특정 시간에 특정 작업, 예약 작업)
- 데이터를 정기적으로 백업
- 데이터를 정기적으로 전송
- 시간을 정기적으로 동기화
- 웹 요청을 저장하고 사용자에게 완료 반환
- 등등
형식, Format
순서대로 분, 시, 일, 월, 요일
** 0 이 일요일로 시작한다는 것을 주의
# 한 줄에 하나의 명령만 사용할 것
# 아래 X
* * * 5 5
/home/script/test.sh
# 아래 O
* * * 5 5 /home/script/test.sh
크론 명령어
- $ crontab -e
- 실제로 크론탭을 설정하여 실행할 명령어를 입력하는 부분
- $ crontab -l
- 크론탭에 등록된 내용들
- $ crontab -r
- 크론탭을 지우는 명령 (등록된 크론 작업 전부 삭제됨)
- $ service cron start
- 크론탭 작업 서비스 시작
- $ service cron stop
- 크론탭 작업 서비스 중지
- $ service cron status
- 크론탭 작동 확인
예시
일반적으로 쉘 스크립트를 주기적으로 실행
#test.sh 매 분마다 실행 (최소 시간 단위가 cron에서는 min)
* * * * * /home/script/test.sh
#금요일 퇴근 시간에 오후 5시 30분에 test.sh 실행(지정된 시간)
45 18 * * 5 /home/script/test.sh
#매일 0분, 20분, 40분에 test.sh 실행 (지정 시간을 여러 개를 두려면 comma 사용)
0,20,40 * * * * /home/script/test.sh
#매일 1시 1분부터 9분까지 매 분 tesh.sh 실행 (범위 시간을 사용하려면 dash - 사용)
1-9 1 * * * /home/script/test.sh
#매 5분마다 test.sh 실행 (간격을 사용하려면 /{interval} 사용)
*/5 * * * * /home/script/test.sh
크론 로깅, Cron Logging
- 크론하는 잡이 제대로 수행되는지 알기 위해 로그를 남김
#test.sh 매 분에 실행, stdout 과 stderr test.sh.log에 저장(쌓이지는 않음)
* * * * * /home/script/test.sh > /home/script/test.sh.log 2>&1
#지속적으로 로그 저장(쌓임)
* * * * * /home/script/test.sh >> /home/script/test.sh.log 2>&1
#로그가 필요가 없는 job이라면
* * * * * /home/script/test.sh > /dev/null 2>&1
**/dev/null 파일은 항상 비어있으며, /dev/null에 전송된 데이터는 제거됨
따라서 특정 명령어를 실행 후, 출력이 필요 없는 경우는 /dev/null에 출력을 지정함
**cron 수행 이력과 변경된 내용에 대한 로그는 아래의 경로에 있음
var/log/cron
$ cat var/log/cron
참고링크
https://devconnected.com/cron-jobs-and-crontab-on-linux-explained/
728x90
반응형
그리드형
'SRE > Linux Basics' 카테고리의 다른 글
grep(작성 중) (0) | 2022.12.02 |
---|---|
rsync, 원격으로 동기화 (0) | 2022.12.02 |
cut, 문자열 자르기 (0) | 2022.12.02 |
Linux 환경에서 init을 대신한 프로세스, systemd (0) | 2022.11.18 |
Linux에서 세션을 종료해도 Process를 Running 하는 법, Daemonize (2) | 2022.10.25 |