Linux

Cron - 스케쥴링,자동화

신수동탈곡기 2021. 6. 13. 18:05

Cron?

Cron은 Unix 계열 OS에서 사용할 수 있는 Job scheduler. Cron을 이용하면 원하는 명령을 지정한 시간대에 자동으로 실행시킬 수 있다.

install and daemon start

$ sudo apt install cron
$ sudo service cron start

Command

$ crontab -e # crontab 편집
$ crontab -l # crontab list 조회
$ crontab -r # crontab list 전체 삭제

Crontab 작성 방식

minute hour day month weekday command

시간작성 예제

0 * * * * # 매시간 정각에 실행
0 10 * * * # 매일 10시에 실행
*/10 * * * * # 10분 간격으로 실행
0 13 10,20 * * # 매달 10일과 20일 13시에 실행
0 13 * * 0,1,2 # 매주 월,화,수 13시에 실행

주의사항

  1. Cron 데몬 시작 까먹지 않기
    • Cron을 설치한다고 끝이 아니다. 데몬을 실행시켜주어야 crontab에 작성한 명령이 실행된다.
    • 당연하지만 까먹기 쉬운 부분이니 꼭 기억해야 한다.
  2. PATH 잡아주기
    • 본인은 python script를 매 시간마다 실행시키기 위해 cron을 활용했다.
    • crontab을 설정하고 테스트를 진행했는데 script 실행이 제대로 되지 않았다.
    • log를 살펴보니 package import 문제였다.
    • python script를 실행시킨다면 interpreter path, PYTHONPATH를 제대로 설정해주어야 한다.
      • conda를 활용하는 환경이라면 interpreter path를 conda env의 python interpreter path를 잡아주어야 package import 에러가 발생하지 않는다.

예시

0 10,17 * * * export PYTHONPATH=$PYTHONPATH:/home/Project_example/ && /usr/bin/python3 /home/Project_example/mains/script1.py >> /home/Project_example/logs/script1.log 2>&1 && sleep 15 && /usr/bin/python3 /home/Project_example/mains/script2.py >> /home/Project_example/logs/script2.log 2>&1

 

- 매일 10시, 17시에 아래 명령을 실행시키도록 설정했다.

'Linux' 카테고리의 다른 글

PPA (Personal Package Archive)  (0) 2022.02.11
Disk mount  (0) 2021.06.25
sudo 권한 부여하기  (0) 2021.06.17