리눅스

[무중단실행/무한실행] 리눅스 실행 명령어

데굴데구르르 림 2023. 2. 23. 10:22
728x90

무중단실행과 프로세스가 죽어도 자동으로 재실행시켜주는 명령어를 찾다가

pm2forever를 알게되었다.

이것을 메모해보려고 한다.

 

 

AWS에 구글 클라우드에 프로젝트를 구축하려고 한다.

예를 들어서 node index.js / node app.js / npm start 등으로 단순하게 실행한다면

원격 화면창 (AWS/구글클라우드)을 닫는 순간 서버도 같이 닫히게 된다.

 

내가 연결을 종료하더라도 프로세스가 계속 실행되도록 하려면 pm2를 써야한다.

 

pm2 

사용법은간단하다

 

🟪 pm2 실행 명령어

pm2 start index.js

     👉 node명령어로 실행할 때, 즉 node index.js 

 

pm2 start npm -- start

     👉 npm 명령어로 실행할 때, 즉 npm start 

 

🟪 pm2 실행중인 프로세스 확인

pm2 list

 

🟪 pm2 프로세스 종료 명령어

pm2 stop [id번호]

ex) pm2 stop 0

 

 

프로젝트 내용을 수정하고 다시 실행해야할때가 있다.

데몬을 써도 되겠지만 무료 서버여서 너무 많이 설치하고 싶지 않았다 ㅎㅎㅎ

git연동을 통해 손수 재시작해주는 편..

 

🟪 pm2 프로세스 재실행 명령어

pm2 restart [id번호]

ex) pm2 restart 0

 


 

만약에 try catch를 쓰지 못하는 프로젝트가 있다.

막 프로그램이 막 죽어.. 근데 손 쓸수가 없어.. 그래서 죽으면 자동으로 실행됐으면 좋겠는데...

웬만한 프로젝트들은 이렇게 되면 안되겠지만..?! 디스코드 봇을 만들때 이랬다..

 

 

 

 

 

forever

 

🟪 forever 실행 명령어

 

- 기본 실행 명령어

forever start index.js

    👉 node명령어로 실행할 때, 즉 node index.js 

 

- npm 명령어 실행시

forever start -c `npm start`

  👉   npm 명령어로 실행할 때, 즉 npm start 

 

개인적으로 덧붙이자면 npm start 쌍따옴표(")로 했을때는 정상적으로 실행되지 않았음

1 옆에 있는 ` 을 이용해서 커맨드를 감싸니까 정상적으로 잘 실행됐음 (구글클라우드..!) (AWS는 모르겠다 잘되나?)

 

- forever 실행시 uid 지정 (커스텀) 하고 싶다면

forever start --uid "drrf" index.js

👉  --uid 뒤에 쌍따옴표로 감싸서 내가 원하는 명으로 작성

 

 

🟪 forever 실행중인 프로세스 확인

forever list

 

 

 

🟪 forever 프로세스 종료 명령어

forever stop [uid번호]

ex) forever stop 0

 

🟪 forever 프로세스 재실행 명령어

forever restart [uid번호]

ex) forever restart  0

 

 

 

 

***

프로젝트 소스코드를 수정하고 자동 재배포되도록 하려면 nodemon을 쓰면된다.