En AIX, ¿cómo puedo obtener la ruta completa de un programa vinculado a un puerto?

14

En Linux puedo usar netstat -tulpnwy ps, así:

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

¿Cómo puedo obtener la ruta completa de un programa vinculado a un puerto cuando lo uso kshen AIX 6?

LanceBaynes
fuente

Respuestas:

10

Según lo recomendado por IBM : use lsof -i -ny busque el puerto XY. Si desea una salida analizable desde lsof, use el -Findicador y analice la salida con awk.

Puede obtener binarios precompilados para AIX V5 . No sé si hay binarios precompilados para V6; si no hay, obtenga la fuente y compílela.

Gilles 'SO- deja de ser malvado'
fuente
lsof no siempre está disponible en AIX: P
LanceBaynes
2
Así que descárguelo o compílelo desde el código fuente , es recomendado por IBM .
Gilles 'SO- deja de ser malvado'
no son siempre "lsof" en las máquinas ... pero pude tomar esto como una buena respuesta (los otros son "buenas" demasiado ty!)
LanceBaynes
4

Intenta usar netstatcon rmsock.

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

Para netstat, -Amuestra la dirección de cualquier bloque de control de protocolo asociado con los sockets, la -aopción muestra el estado de todos los sockets, incluidos los de los procesos del servidor, y la -nopción proporciona resultados en forma numérica, por lo que no está perdiendo el tiempo tratando de resolver direcciones .

rmsock, usando la dirección dada en la salida de column1 de netstat, y usando la tcpcbbase de datos, devolverá información sobre el proceso que contiene ese socket, incluidos el pid y el nombre.

Luego puede usar ps -ef | grep $pidpara obtener la información del proceso.

Puede ver este artículo en IBM Systems Magazine para obtener más información al respecto.

Tim Kennedy
fuente
este no es un evento que se ejecuta correctamente en mi AIX
Kiwy
1

Una de las formas más rápidas de encontrar el puerto de bloqueo de la aplicación es usar lsof o lsof64 :

lsof64 -nP | grep $PortNumber

o

lsof -nP | grep $PortNumber

Lo anterior devolverá el bloqueo del ID del proceso / usando el número de puerto dado. Una vez que lo tenga, ejecute a continuación para encontrar la aplicación / proceso en ejecución

proctree $pid
Saumil
fuente
0

No estoy familiarizado con AIX, pero ¿ha probado el wo elos argumentos de formato a ps?

ps uwx | grep 1482
# or 
ps uex | grep 1482
frogstarr78
fuente
Puede consultar el manual en línea. AIX psadmite los indicadores BSD tradicionales, pero ¿cómo ayudan los indicadores que indicó?
Gilles 'SO- deja de ser malvado'
Hm, parece que hacen cosas diferentes en AIX. Aunque la documentación a la que hizo referencia incluye una opción l que imprime los campos "USUARIO, PID,% CPU,% MEM, SZ, RSS, TTY, ESTADO, TIEMPO, TIEMPO y COMANDO"
frogstarr78
0
netstat -ape | grep $PortNumber
Anónimo
fuente
¿Podría explicar qué está haciendo el comando? Pegar código sin justificación no es muy útil.
n0pe