[Docker] Docker에서의 Crontab 사용
Updated:
Crontab?
- 리눅스 환경에서의 스케줄러
- 특정 시간에 등록된 작업 수행
Crontab 기본 명령어
crontab -l # 현재 등록되있는 crontab list
crontab -e # crontab을 편집할 수 있는 편집기
crontab -r # crontab 삭제
주기 설정
* * * * * ls -al
분(0~59) 시간(0~23) 일(1~31) 월(1~12) 요일(0~7)
# 매분 실행
* * * * * python test.py
# 특정 시간 실행
# 매주 금요일 오전 5시 45분에 실행
45 5 * * 5 python test.py
# 반복 실행
# 매시간 0분 5분 15분에 실행
0,5,15 * * * * python test.py
## 간격 실행
# 매 10분마다 실행
*/10 * * * * python test.py
로그 남기기
* * * * * python test.py > test.log 2>&1
* * * * * python test.py >> test.log 2>&1 # 로그가 쌓임
Docker 환경에서 Crontab
Docker 컨테이너 내부에서 crontab 실행이 잘 안돼서 찾아봤더니 docker file을 만들 때 함께 Crontab을 이미지에 포함 시켜 놓아야 된다고 한다.
이러면 crontab을 바꿀 때 마다 이미지를 다시 짜야 하므로 비효율적이다…
docker에서의 exec 명령어를 Crontab에 등록시켜 docker 내부의 특정 작업을 수행 할 수 있다.
docker exec [컨테이너 이름] [실행 명령어]
docker exec lee python /PATH/test.py
exec 명령어를 shell로 저장 test.sh
crontab -e를 통해 편집기로 들어감
* * * * * /PATH/test.sh >> /PATH/test.log 2>&1
절대경로를 사용하는 것이 멘탈 건강에 좋다..
만약 log가 permission denied 가 뜬다면 chmod +x 를 통해 shell 실행 권한을 부여 해주자
Leave a comment