crontab
- 스케줄러 기능을 한다고 보면된다
- 특정 시간에 특정 작업을 할 필요가 있을때 유용하게 사용할 수 있다.
- 한 줄에 하나의 명령만 사용한다
- 주석은 '#'으로 달 수 있다.
기본 옵션
개인적으로 e랑 l만 알아도 실 사용때 충분했다
옵션이 더 있는지 모르겠다 (더 있겠지..?)
1. crontab -e
처음 실행하면 사용할 에디터를 고르라고 나옵니다
저는 주로 사용하는 vim 선택 (vim.basic)
nano가 쉽다고 하는데 linux 처음 배울때 vim으로 배워서 vim이 익숙하다
2. crontab -l
cat 명령어로 파일을 읽어들인 것 처럼 표준 출력으로 crontab 내용이 나옵니다
아직 설정한게 없다면 위와 같이 나옴
기본 주석의 만 아래에 작성하고 저장 (주석 삭제 물론 가능) 하고 crontab -l을 하면 내용이 나옴
3. crontab -r
crontab의 기본 설정 및 확인, 삭제
crontab 생성 예시
주기를 아는게 제일 중요하다.
주기만 알면 여러가지로 응용이 가능하다
5개가 아닌 6개로 쓰는 경우도 찾아보면 보이던데 그런 경우는 초 단위까지 포함된다
1. 주기
# 분(0-59), 시간(0-23), 일(1-31), 월(1-12) 요일(0-7)
# 요일은 일(0) 월(1) 화(2) 수(3) 목(4) 금(5) 토(6) 일(7)
* * * * *
2. 매분 실행
# 매분 test.sh 실행
* * * * * /home/test.sh
3. 특정 시간 실행
# 매주 화요일 오전 8시 40분 test.sh 실행
40 8 * * 2 /home/test.sh
4. 반복실행
# 매일 매시간 0분, 20분, 40분에 test.sh 실행
0,20,40 * * * * /home.test.sh
5. 범위 실행
# 매일 2시 20분부터 45분까지 매분 test.sh 실행
20-45 2 * * * /home/test.sh
6. 간격 실행
# 매 15분 마다 test.sh 실행
*/15 * * * * /home/test.sh
7. 복잡 로직
# 5일에서 6일까지 2시, 3시, 4시에 매 10분마다 test.sh 실행
*/10 2,3,4 5-6 * * /home/test.sh
8. 크론 로깅
* * * * * /home/test.sh > /home/test.sh.log 2>&1
9. 로그 누적
* * * * * /home/test.sh >> /home/test.sh.log 2>&1
10. 로그 필요 없는 경우
* * * * * /home/test.sh > /dev/null 2>&1
11. crontab 백업
crontab -l > /home/bak/crontab_bak.txt
12. 백업 자동화
59 23 * * * crontab -l > /home/bak/crontab_bak.txt
매일 11시 59분에 백업