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?

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.


lsof n'est pas toujours disponible sur AIX: P
— LanceBaynes

2

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.


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

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

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

Pourriez-vous expliquer ce que fait la commande? Coller du code sans justification n'est pas très utile.
— n0pe
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.