No AIX, como posso obter o caminho completo de um programa vinculado a uma porta?

14

No Linux eu posso usar netstat -tulpnwe ps, assim:

# netstat -tulpnw | grep :53
tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      1482/named          
udp        0      0 127.0.0.1:53                0.0.0.0:*                               1482/named          

# ps aux | fgrep 1482
named     1482  0.0  1.0  93656 44900 ?        Ssl  Sep06   3:17 /usr/sbin/named -u named
root     20221  0.0  0.0   4144   552 pts/0    R+   21:09   0:00 fgrep --color=auto 1482
# 

Como posso obter o caminho completo de um programa vinculado a uma porta ao usar kshno AIX 6?

LanceBaynes
fonte

Respostas:

10

Conforme recomendado pela IBM : use lsof -i -ne procure a porta XY. Se você deseja saída analisável lsof, use o -Fsinalizador e analise a saída com awk.

Você pode obter binários pré-compilados para o AIX V5 . Não sei se existem binários pré-compilados para a V6; se não houver, obtenha a fonte e compile-a.

Gilles 'SO- parar de ser mau'
fonte
lsof nem sempre está disponível no AIX: P
LanceBaynes
2
Portanto, faça o download ou compile-o da fonte , é recomendado pela IBM .
Gilles 'SO- stop be evil'
nem sempre são "lsof" nas máquinas ... mas eu poderia tomar isso como uma resposta boa (outros são "bons" também ty!)
LanceBaynes
4

Tente usar netstatcom rmsock.

port=$1
addr=`netstat -Aan | grep $port | awk '{print $1}`
pid=`rmsock $addr tcpcb | awk '{print $9}'`
ps -ef | grep $pid

Para netstat, -Amostra o endereço de qualquer bloco de controle de protocolo associado aos soquetes, a -aopção mostra o estado de todos os soquetes, incluindo os dos processos do servidor, e a -nopção fornece saída em formato numérico, para que você não perca tempo tentando resolver endereços .

rmsock, usando o endereço fornecido na coluna1 de saída netstate usando o tcpcbbanco de dados, retornará informações sobre o processo que contém esse soquete, incluindo o pid e o nome.

Você pode usar ps -ef | grep $pidpara obter as informações do processo.

Você pode ver este artigo na IBM Systems Magazine para obter mais informações sobre isso.

Tim Kennedy
fonte
este não é o evento executando corretamente em meu AIX
kiwy
1

Uma das maneiras mais rápidas de encontrar a porta de bloqueio do aplicativo é usar lsof ou lsof64 :

lsof64 -nP | grep $PortNumber

ou

lsof -nP | grep $PortNumber

Acima, o ID do processo será bloqueado / usando o número da porta fornecido. Depois de executá-lo, execute abaixo para encontrar o aplicativo / processo em execução

proctree $pid
Saumil
fonte
0

Não estou familiarizado com o AIX, mas você já tentou os argumentos de formatação wou ?eps

ps uwx | grep 1482
# or 
ps uex | grep 1482
frogstarr78
fonte
Você pode verificar o manual online. O AIX pssuporta sinalizadores BSD tradicionais, mas como os sinalizadores que você indicou ajudam?
Gilles 'SO- stop be evil'
Hm, parece que eles fazem coisas diferentes no AIX. Embora a documentação referenciada inclui uma opção l que imprime "USUÁRIO, PID,% CPU,% MEM, SZ, RSS, TTY, STAT, STIME, campos de hora e comando"
frogstarr78
0
netstat -ape | grep $PortNumber
Anônimo
fonte
Você poderia explicar o que o comando está fazendo? Colar código sem justificativa não ajuda muito.
n0pe