Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Why process management matters
📖 Scenario: You are building a simple Node.js script to manage tasks that run in the background. Proper process management helps keep your app stable and responsive, just like a good traffic controller keeps cars moving smoothly without crashes.
🎯 Goal: Create a Node.js script that starts a child process to run a command, monitors it, and handles its exit properly. This shows why managing processes well is important for reliable apps.
📋 What You'll Learn
Use Node.js child_process module
Create a child process to run ping -c 3 google.com
Add a variable maxRetries set to 2
Implement logic to restart the child process if it exits unexpectedly, up to maxRetries
Log messages when the process starts, exits, and when retries happen
💡 Why This Matters
🌍 Real World
Many Node.js applications run background tasks or external commands. Managing these processes well prevents crashes and improves reliability.
💼 Career
Understanding process management is important for backend developers, DevOps engineers, and anyone building robust server-side applications.
Progress0 / 4 steps
1
Set up the child process command
Import the spawn function from the child_process module and create a variable called command set to ping. Also create an array variable called args with the values '-c' and '3', and 'google.com'.
Node.js
Hint
Use const { spawn } = require('child_process') to import spawn. Then create command and args exactly as shown.
2
Add a retry limit variable
Add a variable called maxRetries and set it to 2. This will limit how many times the process restarts if it fails.
Node.js
Hint
Just add const maxRetries = 2; below the previous code.
3
Create a function to start and monitor the process
Write a function called startProcess that takes a parameter retryCount. Inside it, spawn the child process using spawn(command, args). Log Process started when it starts. Add an exit event listener that logs Process exited with code and the exit code. If the exit code is not zero and retryCount is less than maxRetries, log Retrying process and call startProcess again with retryCount + 1. Otherwise, log No more retries.
Node.js
Hint
Define startProcess with retryCount. Spawn the process, log start, listen for exit, and handle retries as described.
4
Start the process for the first time
Call the startProcess function with 0 as the initial retry count to start the process management.
Node.js
Hint
Simply call startProcess(0); at the end of the script.
Practice
(1/5)
1. Why is process management important for Node.js applications?
easy
A. It replaces the need for a database in your app.
B. It makes the code run faster by optimizing JavaScript execution.
C. It automatically writes the application code for you.
D. It helps keep apps running smoothly by restarting them if they crash.
Solution
Step 1: Understand process management role
Process management tools monitor Node.js apps and restart them if they crash to keep them running.
Step 2: Evaluate other options
The other options describe unrelated features: replacing the need for a database, making code run faster by optimizing JavaScript execution, and automatically writing code, which are not functions of process management.
Final Answer:
It helps keep apps running smoothly by restarting them if they crash. -> Option D
Quick Check:
Process management = automatic restarts [OK]
Hint: Process management = keeps app alive by restarting [OK]
Common Mistakes:
Confusing process management with code optimization
Thinking it writes code automatically
Assuming it replaces databases
2. Which of the following is the correct way to start a Node.js app with PM2?
easy
A. node pm2 start app.js
B. start pm2 app.js
C. pm2 start app.js
D. pm2 run app.js
Solution
Step 1: Recall PM2 start command syntax
The correct command to start an app with PM2 is 'pm2 start app.js'.
Step 2: Check other options for syntax errors
The other options are incorrect: 'node pm2 start app.js' wrongly prefixes with 'node', 'start pm2 app.js' uses incorrect order, and 'pm2 run app.js' uses 'run' which is not a PM2 command.
Final Answer:
pm2 start app.js -> Option C
Quick Check:
PM2 start command = 'pm2 start app.js' [OK]
Hint: PM2 start command is always 'pm2 start filename' [OK]
Common Mistakes:
Adding 'node' before pm2 command
Using 'run' instead of 'start'
Incorrect command word order
3. What will happen if you run this PM2 command: pm2 restart app when the app is not running?
medium
A. PM2 will start the app if it is not running.
B. PM2 will show an error saying the app does not exist.
C. PM2 will do nothing and exit silently.
D. PM2 will uninstall the app.
Solution
Step 1: Understand PM2 restart behavior
PM2 restart command will throw an error if the app is not currently running or does not exist in the process list.
Step 2: Evaluate other options
PM2 does not start the app automatically on restart if it is not running; it does not silently exit or uninstall apps.
Final Answer:
PM2 will show an error saying the app does not exist. -> Option B
4. You wrote pm2 start app.js --watch but your app does not restart on file changes. What is the likely problem?
medium
A. The watch flag is misspelled or not supported in your PM2 version.
B. Your app.js has syntax errors preventing restart.
C. You forgot to install PM2 globally.
D. You need to use pm2 reload app.js instead.
Solution
Step 1: Check watch flag usage
The watch flag must be spelled correctly and supported by your PM2 version to enable auto-restart on file changes.
Step 2: Rule out other causes
Installing PM2 globally affects command availability but not watch behavior; syntax errors cause crashes but not watch failure; reload does not enable watch.
Final Answer:
The watch flag is misspelled or not supported in your PM2 version. -> Option A
Quick Check:
Watch flag correct spelling and support needed [OK]
Hint: Check watch flag spelling and PM2 version support [OK]
Common Mistakes:
Assuming global install affects watch
Confusing reload with watch
Ignoring flag spelling errors
5. You want zero downtime updates for your Node.js app using PM2. Which command should you use to reload the app without dropping connections?
hard
A. pm2 reload app.js
B. pm2 restart app.js
C. pm2 stop app.js && pm2 start app.js
D. pm2 delete app.js
Solution
Step 1: Understand zero downtime reload
PM2 reload command reloads the app gracefully, keeping connections alive to avoid downtime.
Step 2: Compare with other commands
Restart stops and starts causing downtime; stop/start sequence causes downtime; delete removes the app.
Final Answer:
pm2 reload app.js -> Option A
Quick Check:
Reload = zero downtime update [OK]
Hint: Use 'pm2 reload' for zero downtime updates [OK]