Ask Steves · Daily notes · VPS, 20% off · AI Profit Lab · SEO · Money Hub

10 September 2026 · One command a day

How do I see all my Node apps running under PM2?

pm2 list shows every Node app that PM2 is managing on your server, in one table. You see the name, whether it is online or stopped, how much memory it is using and how many times it has restarted. You reach for it when a site goes down, when the server feels slow, or when you want a quick health check before you log off.

The command

pm2 list

There are no flags to learn. Run it as the same user that started the apps, because PM2 keeps a separate process list for each Linux user. If you started your apps as root, run it as root. If you started them as a normal user, run it as that user, not with sudo. pm2 ls and pm2 status do the same thing, so use whichever you remember.

What you will see

user@host:~$ pm2 list
┌────┬──────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┐
│ id │ name         │ mode    │ ↺       │ status   │ cpu    │ mem  │ uptime    │
├────┼──────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┤
│ 0  │ appname      │ fork    │ 0       │ online   │ 0.2%   │ 64mb │ 12D       │
│ 1  │ sitename     │ fork    │ 3       │ online   │ 0%     │ 91mb │ 2h        │
│ 2  │ api          │ fork    │ 47      │ errored  │ 0%     │ 0b   │ 0         │
│ 3  │ worker       │ cluster │ 0       │ stopped  │ 0%     │ 0b   │ 0         │
└────┴──────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┘

Each row is one app. The status column is the first thing to check. online is good. stopped means you or a script stopped it on purpose. errored means it crashed and PM2 gave up restarting it. The ↺ column is the restart count. A small number since boot is normal. A large number next to a short uptime means the app is crashing over and over. The mem column shows memory per app, which helps you find the one eating the RAM. The id is what you pass to other PM2 commands, though the name works too.

When to use it

Watch out for

An empty list does not always mean nothing is running. It usually means you are the wrong user. PM2 stores its process list under the home directory of whoever ran pm2 start, so sudo pm2 list shows root's apps and pm2 list shows yours. If you see nothing, try the other user before assuming your apps are gone. Also note that the memory column is per process. An app in cluster mode with four instances shows four rows, and you add them up to get the real total.

Questions people ask

What is the difference between pm2 list and pm2 monit?

pm2 list prints a snapshot and exits, which is what you want in a script or a quick check. pm2 monit opens a live dashboard that updates every second and shows logs alongside the numbers.

Why does the restart count keep going up?

The app is crashing and PM2 is restarting it. Run pm2 logs appname --lines 50 to see the error, then fix the cause rather than just running pm2 restart again.

Seeing every process on the machine in one table, and acting on it, is something you can only do on a server you control. You can get the same VPS with 20% off at https://asksteves.co.uk/vps. Affiliate link.

Everything on this blog runs on one Hostinger KVM 8. This link takes 20% off the same box.

GET A VPS, 20% OFF →

Affiliate link.

More daily notes: How do I watch the nginx error log in real time? · How do I reload nginx without dropping connections? · How do I test my nginx config before reloading it?