Where can I find the ports of all running pm2 apps?

Viewed 39602

I have a server with PM2 installed and 10 running node apps. Every App should run with a different port number. When I install a new App on the server I need the information about the used ports. With 'pm2 list' I get much info about the apps but not the port.

pm2 list

App name       │ id │ version │ mode │ pid   │ status │ restart │ uptime │ cpu  │ mem        │ user │ watching
example_name   │ 1  │ 0.0.0   │ fork │ 25651 │ online │ 0       │ 37D    │ 0%   │ 386.3 MB   │ root │ disabled

I can not find a overview of all used ports and I can't believe that this important information is not given by PM2. Does anyone have any idea where I see a list with all used ports in PM2?

5 Answers

Yeah this is a bit of a failing with pm2 IMHO. Only when you have more than one instance (site) running on the server. I use:

ss -tnlp | grep "node /"

You can then eyeball the pid from pm2 and the port, or in my case you get just a snippet of the directory it's running from. UPDATE: you can use this monstrosity:

ss -ntlp | grep $(pm2 ls | grep "SITENAME" | awk '{print $10}') | awk '{print $4}'

Which dumps the port out.

The OP added a comment saying he added the port number into the name of the running node app, which could get messy, but is a good idea.

Hi Schmidko even i tried the same but i also did not found such option in pm2 so i am currently getting the pid from pm2 l and then using the below command to get port on my linux os

sudo netstat -ano -p tcp | grep <PID>

so i get output like this : tcp6 0 0 :::1111 :::* LISTEN 2111/app.js off (0.00/0/0)

where 2111/app.js is PID & :::1111 is the port

(posting a comment here as i dont have right to comment)

sudo netstat -tnlp
  • -t for TCP only
  • -l for Listening ports
  • -n for Don't look up service & names, just display numbers
  • -p for show processor information

Most of the time the ports are visible in the logs. Try this:

pm2 logs

The source code of most applications logs the exposed port when the app is running. This is very helpful indeed to find all the ports of running pm2 apps.

I tend to use the following commands:

ps aux | grep node

Will show the running node processes and their PID

netstat -atlnp | grep LISTEN | grep node

Will show all ports running node (not just from PM2 if running other node applications outside of pm2)

You can then cross reference the PID of the node process to its port that it is listening on.

Related