November 05, 2019
리눅스에서 시작프로그램을 등록하고 싶어요 (라즈베리파이)
단순 시작프로그램 등록만을 원한다면 rc.local 파일을 수정하거나 데몬으로 추가할 수 있지만
같은 문제는 따로 처리해야합니다. 😦
PM2를 사용한다면 간단한 방법으로 위와 같은 문제들을 해결 할 수 있습니다.
사용자의 프로그램을 항상 동작하도록 도와주는 프로세스 관리자입니다.
기본적으로 NODE.JS에 최적화되어 있지만 아래 언어들도 지원하는 것으로 보입니다.
{
".sh": "bash",
".py": "python",
".rb": "ruby",
".coffee": "coffee",
".php": "php",
".pl": "perl",
".js": "node"
}
본격적으로 PM2 사용 방법을 알아보겠습니다.
자세한 정보는 QUICK START 참조하세요
pm2 install
pm2 start
pm2 startup
pm2 save
pm2 monit
등으로 정상 동작 확인npm install pm2@latest -g
# or
yarn global add pm2
pm2를 전역으로 설치합니다. 전역으로 설치해야 shell 상에서 pm2
커맨드를 사용 할 수 있어요.
npm
이나 yarn
중 선호하는 패키지 관리자 사용하세요pm2 start <Your App>
기본 형식은 위와 같습니다.
저는 거의 항상 npm script를 사용해서 프로그램을 실행하기 때문에 아래와 같이 시작합니다.
pm2 start npm -- start # 이름 등록 하지 않음(npm으로 등록됨)
# or
pm2 start npm --name "Your APP Name" -- start # (앱 이름 등록 가능)
아래 커맨드들을 이용하여 현재 등록되어 있는 프로세스들을 확인 할 수 있습니다.
pm2 ls
익숙한 ls 명령어를 이용해서 현재 등록된 프로세스들을 조회할 수 있습니다.
pm2 monit
각 프로세스의 출력 및 상태를 실시간으로 확인할 수 있는 UI가 제공됩니다.
pm2 logs
pm2 logs --lines 200
저장된 로그를 확인합니다.
--lines
를 이용해 줄 수를 지정할 수 있습니다.
프로그램이 정상적으로 등록되고 동작하는 것을 확인했다면 프로그램 시작 등록을 할 차례입니다.
pm2 startup
위 명령어를 입력하면 아래와 같은 메세지가 출력됩니다.
[PM2] You have to run this command as root. Execute the following command:
sudo su -c "env PATH=$PATH:/home/unitech/.nvm/versions/node/v4.3/bin pm2 startup <distribution> -u <user> --hp <home-path>
현재 등록된 프로세스들을 시작프로세스로 등록하기 위한 커맨드가 제공됩니다 (2번째 줄부터)
이 커맨드는 각기 다른 OS에 맞게 PM2에서 출력해주는 것이므로 제 블로그에 있는 글을 복사하지 말고 해당 환경에서 출력된 command를 복사해서 붙여넣어주세요
https://pm2.keymetrics.io/docs/usage/quick-start/
https://pm2.keymetrics.io/docs/usage/startup/
https://stackoverflow.com/questions/31579509/can-pm2-run-an-npm-start-script