프로그래밍 공부하기

aws crontab 설정하기 본문

기타

aws crontab 설정하기

ihl 2021. 4. 30. 18:22

 

    리눅스에는 명령을 주기적으로 반복해서 실행해주는 crontab이라는 명령이 있다. 이 명령은 다양한 곳에 활용될 수 있는데 나는 땅땅마켓 이라는 프로젝트의 물품목록을 리셋시켜주기 위해 사용했다.

 

1. crontab 설정

  1) 할 일 목록 만들기

reset.sh

    프로젝트의 물품목록을 리셋시키기 위해서는 Database를 아에 지우고 다시 만든 후 시드를 다시 채워야 했다. 또한 서버에 남아있는 데이터도 지우기 위해 서버도 재실행 시켜주어야 했다. 이렇게 실행해야할 작업이 여러개 있을 때는 셸 스크립트(.sh)로 작성하여 저장한다. 나는 reset.sh라는 이름으로 만들어주었다.

 

  2) crontab 설정

 

리눅스 반복 예약작업 cron, crond, crontab - 제타위키

1 개요[ | ] cron, cronie, crond, cron daemon, crontab, cron job, crontab job 크론, 크론 데몬, 크론탭, 크론작업, 리눅스 작업 스케줄러 /usr/sbin/crond /usr/bin/crontab 프로세스 예약 데몬 리눅스용 작업 스케줄러 특정

zetawiki.com

    crontab에 대한 설명은 위의 링크로 대체한다. 나의 경우 crontab -e 명령을 사용하여 직접 reset.sh 를 실행하도록 설정해주었으며 에러핸들링을 위해 실행 결과를 log파일로 남겼다.

 

2. 에러 핸들링

  [Permission Denied]

chmod +x reset.sh

    셸 스크립트 실행하면 권한이 없다고 거부되는 경우가 있다. 이 경우에는 위처럼 실행권한을 주면 된다.        

 

 

  [Unable to resolve sequelize package in /home/ubuntu]

0 8 * * 5 cd /home/ubuntu/code && reset.sh >> /home/ubuntu/log/crontab.log 2>&1

    실행 되었지만 위와 같이 package를 찾을 수 없다는 오류가 발생할 수 있다. npx sequelize-cli는 package.json이 있는 폴더에서 실행해야하는데 crontab의 working directory가 기본적으로 /home/ubuntu로 정해져 있기 때문에 오류가 나는 것이다. 실제로 /home/ubuntu에서 npx sequelize-cli 하면 동일한 오류가 발생한다.

 

  이 때는 위와 같이 디렉토리를 이동한 후 reset.sh를 실행하도록 변경하면 된다.

 

 


물품 리셋 성공!

  처음에 이 오류를 봤을 땐 내 EC2 내의 npx가 /user/bin이 아니라 /home/ubuntu/.nvm 안에 있어서 숨겨진 파일이라 못찾나? 생각이 들어 /user/bin에 심볼릭 링크도 만들고, 환경변수도 지정하고 별 짓을 다했는데 그냥 명령어에 같이 쓰면 되는 것을 알고 조금 허망했다..

 


unix.stackexchange.com/questions/38951/what-is-the-working-directory-when-cron-executes-a-job

 

What is the 'working directory' when cron executes a job?

I have a script that works when I run it from the command line, but when I schedule it with cron I get errors that it cannot find files or commands. My question is twofold: When I schedule a cron...

unix.stackexchange.com

 

 

'기타' 카테고리의 다른 글

Git Branch 전략  (0) 2021.06.05
AWS CodeBuild  (0) 2021.05.13
[CodeStates Talk Session 후기] 지원에서 합격까지  (0) 2021.03.13
AWS 서버 만들기 2. PuTTy 접속  (0) 2021.02.01
AWS 서버 만들기 1. 생성  (0) 2021.02.01
Comments