일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- install
- javascript
- 3.0
- 설치
- postgres
- 설정
- python
- 윈도우
- java
- DB
- Windows
- 우분투
- 자바
- Atlassian
- 데이터베이스
- DATABASE
- script
- hamonikr
- PostgreSQL
- node
- 노드
- JS
- 스크립트
- ubuntu
- 파이썬
- 아틀라시안
- 자바스크립트
- 리눅스
- 하모니카
- Linux
Archives
- Today
- Total
LukeHan 의 잡다한 기술 블로그
죽은 데몬 자동 재실행 본문
반응형
서비스 운영하는 도중 서비스 데몬이 죽는 경우가 간혹 발생한다.
그런 경우 매번 접속하여 서비스를 실행시키기는 여간 번거로운게 아니다.
별다른 프로그램 설치 없이 스크립트로 자동 재실행하는 방법이 있다.
스크립트작성
번거로운 작업을 피하기 위해 관리자로 접속한다.
자동 재실행을 위한 스크립트 작성
# 관리자 접속
sudo su
# 다음의 경로에 실행시킬 스크립트를 만든다. 예시에선 restart_hamonia.sh 로 작성한다.
vi /root/restart_hamonia.sh
# 다음 내용을 입력한다.
#!/bin/bash
hamoniaApp=$(sudo ps -ef | grep server.js | wc -l)
hamoniaWB=$(sudo ps -ef | grep app.js | wc -l)
if [ "$hamoniaApp" -ne 3 ]; then
cd /hamonia
sudo nohup node server.js &
fi
if [ "$hamoniaWB" -ne 3 ]; then
cd /whiteboard
sudo nohup node app.js &
fi
# 이 스크립트는 실행중인 서비스를 검색하여 카운트 한다.
# 아래는 sudo ps -ef | grep app.js 를 실행한 결과이다.
root - - 0 21:11 ? 00:00:00 sudo nohup node app.js
root - - 0 21:11 ? 00:00:00 node app.js
******* - - 0 21:24 pts/0 00:00:00 grep --color=auto app.js
# 검색하면 위와 같이 나타난다.
# 그래서 서비스가 이상없이 실행중인 경우 각각의 변수에 3이 담겨져 있다.
# 3이 아닌경우 서비스를 재실행한다.
크론탭등록
크론탭을 이용하여 작성한 스크립트를 실행하도록 한다.
crontab 을 이용한 스크립트 실행
# 관리자 상태로 다음을 입력한다.
crontab -e
# 다음을 추가한다. 1분주기로 스크립트를 실행한다.
* * * * * /root/restart_hamonia.sh
# 실행여부를 확인한다.
cat /var/log/syslog | grep restart_hamonia.sh
참고
- 죽은 데몬을 자동으로 재실행 하기 : https://idchowto.com/?p=14650
- 크론탭 작업 5분마다 수행 : https://zetawiki.com/wiki/%ED%81%AC%EB%A1%A0%ED%83%AD_%EC%9E%91%EC%97%85_5%EB%B6%84%EB%A7%88%EB%8B%A4_%EC%88%98%ED%96%89
- Bash 실행결과를 변수에 담기 : https://zetawiki.com/wiki/Bash_%EC%8B%A4%ED%96%89%EA%B2%B0%EA%B3%BC%EB%A5%BC_%EB%B3%80%EC%88%98%EC%97%90_%EB%8B%B4%EA%B8%B0
반응형
Comments