📖 Scenario: You have a simple Node.js app that you want to keep running smoothly on your computer or server. PM2 is a tool that helps you start, stop, and monitor your app easily.
🎯 Goal: Learn how to use PM2 to start a Node.js app, check its status, and stop it when needed.
📋 What You'll Learn
Create a basic Node.js app file named app.js that listens on port 3000
Install PM2 globally using npm
Start the app with PM2 using the correct command
Check the app status with PM2 and then stop the app
💡 Why This Matters
🌍 Real World
PM2 helps keep Node.js apps running without manual restarts, useful for websites, APIs, and background services.
💼 Career
Knowing PM2 is valuable for developers and system administrators to manage Node.js apps in production environments.
Progress0 / 4 steps
1
Create a simple Node.js app
Create a file named app.js with these exact lines to make a server that listens on port 3000 and responds with 'Hello from PM2!'. Use const for imports and app.listen(3000) to start the server.
Node.js
Hint
Use Node.js http module to create a server and listen on port 3000.
2
Install PM2 globally
Write the exact command to install PM2 globally using npm: npm install -g pm2
Node.js
Hint
Use npm with -g to install PM2 globally.
3
Start the app with PM2
Write the exact command to start app.js using PM2: pm2 start app.js
Node.js
Hint
Use PM2's start command followed by the app file name.
4
Check status and stop the app
Write the exact commands to check the status of PM2 processes with pm2 status and then stop the app with pm2 stop app.js
Node.js
Hint
Use pm2 status to see running apps and pm2 stop app.js to stop your app.
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
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.
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.
Final Answer:
To keep Node.js applications running and restart them if they crash -> Option A
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
Step 1: Recall PM2 start command
The correct command to start an app with PM2 is pm2 start <file>.
Step 2: Verify options
Options A, B, and D use incorrect verbs like run, launch, or execute which are not valid PM2 commands.
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
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.
Step 2: Determine final state
After deletion, the app is no longer managed or listed by PM2.
Final Answer:
The app is removed from PM2 process list -> Option D
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
Step 1: Identify command to view logs
pm2 logs shows real-time logs including errors from apps managed by PM2.
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.
Final Answer:
pm2 logs -> Option B
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
Step 1: Understand PM2 watch option
The --watch flag tells PM2 to watch for file changes and restart the app automatically.
Step 2: Evaluate other options
--no-restart disables restarts, --ignore-watch disables watching, and --restart-delay adds delay but doesn't enable watching.
Final Answer:
pm2 start server.js --watch -> Option A
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 unknownstrongwhile earning +1 Grip toward your certificate.