Qual processo está usando uma determinada porta

Publicado em 28/12/2010 | Autor Márcio




Usando o comando netstat -an é possível ver quais portas estão em uso pelo sistema operacional, mas não quais são os processos que as estão usando. Para conseguir isso cada sistema operacional tem um método diferente.

Aqui vão alguns.

No linux

É fácil, o comando fuser retorna o pid do processo

Sintaxe:

fuser <porta>/<protocolo>

Exemplo:

fuser 21/tcp

No solaris

É o mais complicado, o comando pfiles retorna as portas usadas por um processo, então é necessário criar um script para pesquisar em todos os processos

Sintaxe:

pfiles <pid>

Script:

#!/bin/bash
# find from a port the pid that started the port
line=’————————————————————————-’
pids=`/usr/bin/ps -ef | sed 1d | awk ‘{print $2}’`
# Prompt users or use 1st cmdline argument
if [ $# -eq 0 ]; then
echo “Enter port you like to know pid for: ”
read ans
else
ans=$1
fi
# Check all pids for this port, then list that process
for f in $pids
do
/usr/proc/bin/pfiles $f 2>/dev/null | /usr/xpg4/bin/grep -q “port: $ans”
if [ $? -eq 0 ] ; then
echo “$line
echo Port: $ans is being used by PID: \c”
/usr/bin/ps -o pid -o args -p $f | sed 1d
fi
done

(Script retirado de: http://sysunconfig.net/unixtips/port2pid)

No AIX

Use o comando lsof acompanhado de um grep para filtrar a porta desejada.

Sintaxe:

lsof -P | grep “:<porta> ”

Exemplo:

lsof -P|grep “:21 ”

No WINDOWS

Menti, tem um sistema operacional que o netstat mostra o nome do processo que está usando uma porta. Só tem que colocar os parâmetros corretos.

Exemplo:

netstat -abn

Comments

Deixe um comentário!