Bird
Raised Fist0
Node.jsframework~5 mins

PM2 for process management in Node.js

Choose your learning style10 modes available
Introduction

PM2 helps keep your Node.js apps running smoothly. It restarts apps if they crash and makes managing multiple apps easy.

You want your Node.js app to restart automatically if it crashes.
You need to run multiple Node.js apps at the same time.
You want to monitor app performance and logs easily.
You want to start your app automatically when the server boots.
You want to manage app versions and reload without downtime.
Syntax
Node.js
pm2 start <app.js> [options]
pm2 stop <app_name_or_id>
pm2 restart <app_name_or_id>
pm2 list
pm2 logs
pm2 monit

Use pm2 start to launch your app with PM2.

App can be referenced by name or ID for stop/restart commands.

Examples
Starts the app.js file with PM2.
Node.js
pm2 start app.js
Restarts the app with ID 0.
Node.js
pm2 restart 0
Stops the app named 'my-app'.
Node.js
pm2 stop my-app
Shows all running apps managed by PM2.
Node.js
pm2 list
Sample Program

This simple Node.js app creates a server that responds with a greeting. You can run it with PM2 to keep it running and restart if it crashes.

Node.js
/* app.js */
const http = require('http');
const port = 3000;

const server = http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello from PM2 managed app!');
});

server.listen(port, () => {
  console.log(`Server running on port ${port}`);
});
OutputSuccess
Important Notes

PM2 can save app states and resurrect them after server reboot using pm2 save and startup scripts.

Use pm2 logs to see real-time logs of your apps.

PM2 also supports cluster mode to use multiple CPU cores for better performance.

Summary

PM2 keeps Node.js apps running and restarts them if they crash.

You can manage multiple apps easily with simple commands.

It helps monitor apps and handle server restarts smoothly.

Practice

(1/5)
1. What is the primary purpose of PM2 in Node.js application management?
easy
A. To keep Node.js applications running and restart them if they crash
B. To compile Node.js code into machine code
C. To serve static files like images and CSS
D. To replace the Node.js runtime environment

Solution

  1. Step 1: Understand PM2's role

    PM2 is a process manager designed to keep Node.js apps alive and restart them automatically if they crash.
  2. Step 2: Compare options

    Options A, B, and C describe unrelated tasks like replacing the runtime, compiling code, or serving static files, which PM2 does not do.
  3. Final Answer:

    To keep Node.js applications running and restart them if they crash -> Option A
  4. Quick Check:

    PM2 = process manager for app uptime [OK]
Hint: PM2 manages app uptime and restarts crashed apps [OK]
Common Mistakes:
  • Confusing PM2 with a compiler or bundler
  • Thinking PM2 serves static content
  • Believing PM2 replaces Node.js runtime
2. Which of the following is the correct command to start an app named app.js using PM2?
easy
A. pm2 run app.js
B. pm2 launch app.js
C. pm2 start app.js
D. pm2 execute app.js

Solution

  1. Step 1: Recall PM2 start command

    The correct command to start an app with PM2 is pm2 start <file>.
  2. Step 2: Verify options

    Options A, B, and D use incorrect verbs like run, launch, or execute which are not valid PM2 commands.
  3. Final Answer:

    pm2 start app.js -> Option C
  4. Quick Check:

    Start app = pm2 start [OK]
Hint: Use 'pm2 start' to launch apps [OK]
Common Mistakes:
  • Using 'pm2 run' instead of 'pm2 start'
  • Confusing PM2 commands with other tools
  • Typing 'pm2 launch' which is invalid
3. Given the following PM2 command sequence:
pm2 start app.js --name myapp
pm2 restart myapp
pm2 stop myapp
pm2 delete myapp

What is the state of myapp after these commands?
medium
A. The app crashed and PM2 is trying to restart it
B. The app is stopped but still listed in PM2 process list
C. The app is running and managed by PM2
D. The app is removed from PM2 process list

Solution

  1. Step 1: Analyze each command effect

    pm2 start app.js --name myapp starts and names the app. pm2 restart myapp restarts it. pm2 stop myapp stops it but keeps it listed. pm2 delete myapp removes it from PM2's list.
  2. Step 2: Determine final state

    After deletion, the app is no longer managed or listed by PM2.
  3. Final Answer:

    The app is removed from PM2 process list -> Option D
  4. Quick Check:

    Delete removes app from PM2 list [OK]
Hint: Delete removes app from PM2 list, stop just pauses it [OK]
Common Mistakes:
  • Confusing stop with delete
  • Assuming restart keeps app stopped
  • Thinking delete crashes the app
4. You run pm2 start app.js but the app crashes immediately. Which PM2 command helps you see the error logs to debug the issue?
medium
A. pm2 status
B. pm2 logs
C. pm2 restart
D. pm2 list

Solution

  1. Step 1: Identify command to view logs

    pm2 logs shows real-time logs including errors from apps managed by PM2.
  2. Step 2: Compare other commands

    pm2 status and pm2 list show process info but not detailed logs. pm2 restart restarts apps but doesn't show logs.
  3. Final Answer:

    pm2 logs -> Option B
  4. Quick Check:

    Logs show errors for debugging [OK]
Hint: Use 'pm2 logs' to see app errors instantly [OK]
Common Mistakes:
  • Using 'pm2 status' to find errors
  • Restarting app without checking logs
  • Confusing 'pm2 list' with logs
5. You want PM2 to automatically restart your app server.js whenever the file changes during development. Which command achieves this?
hard
A. pm2 start server.js --watch
B. pm2 start server.js --no-restart
C. pm2 start server.js --ignore-watch
D. pm2 start server.js --restart-delay 1000

Solution

  1. Step 1: Understand PM2 watch option

    The --watch flag tells PM2 to watch for file changes and restart the app automatically.
  2. Step 2: Evaluate other options

    --no-restart disables restarts, --ignore-watch disables watching, and --restart-delay adds delay but doesn't enable watching.
  3. Final Answer:

    pm2 start server.js --watch -> Option A
  4. Quick Check:

    Watch flag enables auto-restart on file changes [OK]
Hint: Use '--watch' to auto-restart on file changes [OK]
Common Mistakes:
  • Using --no-restart disables restarts
  • Ignoring watch disables file monitoring
  • Restart delay doesn't watch files
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard