crontab 정리
cron
특정한 시간에 원하는 작업을 자동으로 수행하고 싶을 때 수행하게 해주는 스케줄러 같은 역할
🌈 배경
특정한 시간에 원하는 작업을 자동으로 수행하고 싶을 때 수행하게 해주는 스케줄러 같은 역할
cron에 관련하여 시간을 설정하는 기본 이론 등은 다른 글을 참고하길 바랍니다.
본 글에서는 제가 python을 이용하여 주기적으로 DB에 데이터를 넣으면서 겪었던 에러를 공유하고자 합니다.
⚡️ 첫번째 error 및 해결
crontab -e
위의 명령어를 통하여 cron 을 실행했을 때 작동하지 않아서
1. vi /etc/crontab
2. service cron start
3. service cron status
을 사용하여 cron을 실행 시켰다.
crontab 의 시간설정은 다음과 같다.
* * * * * root /usr/local/bin/python /usr/src/app/insert_db_data.py
위의 코드를 보면 매분 insert_db_data.py 파일을 실행시킨다는 의미이고
중간에 root 권한과 [/usr/local/bin/python]은 파이썬의 경로를 나타내고 있다.
⚡️ 두번째 error 및 해결
매분 파일을 실행시켜서 DB에 데이터를 넣는 것은 성공했습니다.
하지만 저의 목표는 하루에 한 번만 DB에 데이터를 넣는 것이어서 아래와 같이 crontab을 저장했습니다.
0 0 * * * root /usr/local/bin/python /usr/src/app/insert_db_data.py
위와 같이 작성하면 매일 0시 0분에 데이터를 넣는다는 의미가 됩니다.
하지만 저의 DB에는 데이터가 들어가지 않았습니다.
문제는 linux의 시간 문제였습니다.
너무 당연할 수는 있으나 혹시나 저와 같은 실수를 하시는 분이 있을까봐 글을 남겨 놓습니다.
1. date 명령어를 통하여 시간을 알아내고 현재 시간과 다르다면 변경을 해줘야합니다.
2. 다를 경우에는 날짜를 재설정하도록 합니다.
rm /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
3. 다시 date를 통해 확인하면 시간이 맞는 것을 확인할 수 있습니다.
위와 같이 시간을 맞추고 다시 아래와 같이 crontab을 실행시키면 매일 0시 0분마다 데이터가 저장되는 것을 확인할 수 있습니다.
0 0 * * * root /usr/local/bin/python /usr/src/app/insert_db_data.py
마치며
여러방법들이 있겠지만 제가 직접하면서 작성했던 것들을 그대로 담았습니다.
감사합니다😃
Author And Source
이 문제에 관하여(crontab 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hakoh/crontab-정리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)