Sous AIX, comment puis-je obtenir le chemin complet d'un programme lié à un port?

14

Sous Linux, je peux utiliser netstat -tulpnwet ps, comme ceci:

# 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
# 

Comment puis-je obtenir le chemin complet d'un programme lié à un port lors de l'utilisation kshsous AIX 6?

LanceBaynes
la source

Réponses:

10

Comme recommandé par IBM : utilisez lsof -i -net recherchez le port XY. Si vous voulez une sortie analysable à partir de lsof, utilisez l' -Findicateur et analysez la sortie avec awk.

Vous pouvez obtenir des fichiers binaires précompilés pour AIX V5 . Je ne sais pas s'il existe des binaires précompilés pour V6; s'il n'y en a pas, récupérez la source et compilez-la.

Gilles 'SO- arrête d'être méchant'
la source
lsof n'est pas toujours disponible sur AIX: P
LanceBaynes
2
Alors téléchargez-le ou compilez-le à partir des sources , c'est recommandé par IBM .
Gilles 'SO- arrête d'être méchant'
il n'y a pas toujours "lsof" sur les machines ... mais je pourrais prendre cela comme une bonne réponse (d'autres sont "bonnes" aussi! ty)
LanceBaynes
4

Essayez d'utiliser netstatavec rmsock.

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

Pour netstat, le -Aaffiche l'adresse de tous les blocs de contrôle de protocole associés aux sockets, l' -aoption affiche l'état de tous les sockets, y compris ceux des processus serveur, et l' -noption donne une sortie sous forme numérique, vous ne perdez donc pas de temps à essayer de résoudre les adresses .

rmsock, en utilisant l'adresse donnée dans la sortie column1 de netstat, et en utilisant la tcpcbbase de données, retournera des informations sur le processus contenant ce socket, y compris le pid et le nom.

Vous pouvez ensuite utiliser ps -ef | grep $pidpour obtenir les informations sur le processus.

Vous pouvez consulter cet article dans IBM Systems Magazine pour plus d'informations à ce sujet.

Tim Kennedy
la source
cet événement ne s'exécute pas correctement sur mon AIX
Kiwy
1

L'un des moyens les plus rapides de trouver le port de verrouillage d'application est d'utiliser lsof ou lsof64 :

lsof64 -nP | grep $PortNumber

ou

lsof -nP | grep $PortNumber

Ci-dessus retournera le verrouillage de l'ID de processus / en utilisant le numéro de port donné. Une fois que vous l'avez, exécutez ci-dessous pour trouver l'application / le processus en cours

proctree $pid
Saumil
la source
0

Je ne connais pas AIX, mais avez-vous essayé les arguments de formatage wou ?eps

ps uwx | grep 1482
# or 
ps uex | grep 1482
frogstarr78
la source
Vous pouvez consulter le manuel en ligne. AIX psprend en charge les indicateurs BSD traditionnels, mais comment les indicateurs que vous avez indiqués aident-ils?
Gilles 'SO- arrête d'être méchant'
Hm, on dirait qu'ils font des choses différentes sur AIX. Bien que la documentation que vous avez référencée comprenne une option l qui affiche "USER, PID,% CPU,% MEM, SZ, RSS, TTY, STAT, STIME, TIME et COMMAND"
frogstarr78
0
netstat -ape | grep $PortNumber
Anonyme
la source
Pourriez-vous expliquer ce que fait la commande? Coller du code sans justification n'est pas très utile.
n0pe