앞서 nohub를 사용하여 배포한 방법은 서버를 배포했지만
서버가 내려갈 경우 다시 배포하지 못합니다.
- 트래픽 부하, 에러 -> 서버 종료
- 서버 종료시 error로그를 남김 -> nohup 2>err.log
- 하지만, 자동 재시작이 되지 않습니다...
즉, nohub는 언제 서버가 내려갈지 알 수 없으니 불안전한 배포 입니다.
다양한 방법이 있지만 우선 crontab으로 해결해 보겠습니다.
crontab
Crontab은 스케줄링을 관리하는 프로그램
즉, 반복적인 작업을 정의하여 실행해주는 자동 매크로
crontab 옵션
crontab -l
예약된 작업 리스트 출력
crontab -e
예약된 작업 리스트 수정
crontab -r
예약된 작업 리스트 목록 삭제
crontab -e
우선 설정하는 방법은 crontab -e 입니다.
* * * * * ls -l 1>>cron.log
첫번째 필드 : 분 (0-59)
두번째 필드 : 시간 (0-23)
세번째 필드 : 일 (1-31)
네번째 필드 : 월 (1-12)
다섯번째 필드 : 요일 (0-7)
* : 매시간대를 의미
> : 덮어 씌우기
>> : append
crontab을 스크립트로 등록하기
myScript.sh 파일을 만들어 crontab을 설정하는 스크립트를 작성하겠습니다.
# 크론탭 내용을 crontab_new 파일로 옮긴다.
crontab -l 1>crontab_new
# crontab_new 파일에 echo의 내용을 추가한다.
echo "* * * * * /home/ubuntu/job.sh" 1>>crontab_new
# crontab에 crontab_new에 작성한 내용을 반영한다.
crontab crontab_new
# crontab_new 파일을 삭제한다.
rm crontab_new
job.sh
ls -l >> /home/ubuntu/cron.log
myScript에서는 crontab_new 파일로 crontab 설정을 합니다.
이떄 /home/ubuntu/job.sh 파일을 실행하는 crontab을 설정합니다.
job.sh에는 수행할 내용을 담아두면 됩니다.
현재는 단순히 목록을 확인하는 용도의 스크립트만 작성하였습니다.
cron.log를 만들어 현재 폴더의 목록을 계속 저장할 것입니다.
설정을 했으니 스크립트를 실행해 보겠습니다.
chmod u+x myScript.sh
./myScript.sh
설계한 대로 잘 작동하는것을 확인할 수 있습니다.
'AWS' 카테고리의 다른 글
AWS 재배포 직접 해보기 및 crontab 문제점 파악 (0) | 2023.11.11 |
---|---|
crontab 배포 스크립트로 스프링 서버 재시작하기 (1) | 2023.11.11 |
타임존 변경 및 종료스크립트 (0) | 2023.11.11 |
표준 출력, 에러 로그 파일 분리하기 (0) | 2023.11.11 |
nohup으로 백그라운드 실행하기 (0) | 2023.11.11 |