31

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?

Schmidko
  • 690
  • 1
  • 7
  • 17

5 Answers5

21

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.

wuxmedia
  • 449
  • 4
  • 6
11

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.

Fabian
  • 229
  • 3
  • 8
9

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)

Danny Galiyara
  • 197
  • 2
  • 8
  • 4
    I solved the problem with adding the port number to the app name :) Your solution is a little bit to complicated when there are running 20 apps on a server. But tumbs up for this approach. :) – Schmidko Aug 08 '19 at 09:56
  • 1
    i liked your idea too :) Just waiting for pm2 too add this feature may be on pm2 show command – Danny Galiyara Aug 09 '19 at 01:58
9
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
Tyler2P
  • 2,324
  • 26
  • 22
  • 31
Crelloc
  • 113
  • 1
  • 3
0

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.

lky
  • 1,081
  • 3
  • 15
  • 31