How to parse netstat command in order to get process name and PID from it? How to parse netstat command in order to get process name and PID from it? linux linux

How to parse netstat command in order to get process name and PID from it?


Try

ps -p $(lsof -ti tcp:80) o comm=,pid=

or

netstat -tlnp | awk '/:80 */ {split($NF,a,"/"); print a[2],a[1]}'


(Detracting slightly from your original question), to find out which process listens to a certain port number, I usually use the lsof command. For example:

lsof -i tcp:80

To show only the process name and PID, parse the output using:

lsof | tail -n +2 | awk '{print $1 " " $2}'

The tail command skips the output header while awk prints out the required columns.

Why lsof

Trying to grep the output of netstat can be messy as you'll need to make sure you're matching against the correct column. A robust solution can be rather long winded and difficult (for me anyway) to produce on-demand.

lsof saves you the trouble of matching the right ports, and has lots of other uses too, e.g. the inverse of what we're doing now (find out which ports are being used by a process), or determining which process is using a file / mount point (or the inverse). See lsof manpage for more examples.


awk + sed:

awk '{print $7}' | sed "s/\// /g"