Llegando a buen puerto

Febrero 9, 2009 at 9:52 am (Uncategorized)

Tengo que dejar de hacer estos juegos de palabras tan ridículos…

Aprovecharemos las tribulaciones de parte del equipo de Sybase para comentar un par de trucos sobre puertos y procesos, que es algo que viste mucho y resulta muy útil y facil.

Supongamos una situación más que típica. Una instancia de base de datos ha dado un error y se está intentando parar. Como el error ha dejado un montón de procesos colgando de un puerto, no se puede parar hasta que se eliminen uno a uno. Pero ¿cuales son esos procesos?.

Partamos de la base de que conocemos cual es el puerto de la aplicación. No me digan que o lo saben, porque cualquier administrador de bases de datos digno de su nombre deberia conocer ese dato. Hombre ya.

Emplearemos lsof para ver qué está escuchando por ahí

root@madhatter # lsof |grep -i esta|grep 2640
dataserve 15366   sybase   51u  IPv4 0x513f9aec060  0t0  TCP madhatter-ce0:45880->madhatter-ce0:2640 (ESTABLISHED)

Bueno, pues podemos ver que se trata de una instancia Sybase lanzada con un par de dataservers por debajo.

En fin, vamos al meollo de la cuestión, averiguar cuales son todos los procesos que están escuchando. Filtremos un poco las opciones de lsof, buscando un puerto concreto y un estado concreto: LISTEN. En caso necesario, también se podría buscar procesos vinculados a un puerto buscando por BOUND.

root@madhatter # lsof -i | egrep LISTEN|grep 2640
aocarga_S  5770   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
aocarga_S  6742   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
aocarga_S  7303   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
aocarga_S  7982   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
aocarga_S  9387   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
aocarga_S  9574   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
aocarga_S 10571   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
sleep     12052   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
sleep     12063   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
sleep     12066   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
sleep     12070   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
sleep     12071   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
sleep     12074   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
sleep     12075   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
sleep     12078   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
sleep     12080   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
sleep     12084   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
sleep     12085   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
aocarga_S 16192   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
aocarga_S 20088   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
fcunw     22710   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
aocarga_S 22714   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
aocarga_S 22715   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
fcunw     22768   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
fcunw     27050   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)
fcunw     27372   root  101u  IPv4 0x3079c7fa4b8   0t0  TCP *:2640 (LISTEN)

Quizás deberíamos hablar un día del fascinante mundo de los puertos…

Y como gran final, lo unimos todo en una línea gracias a la magia de UNIX :)

root@madhatter # lsof -i | egrep LISTEN|grep 2640 |nawk ' {print $2}'

Caballeros, ya pueden empezar a mandar kills a estos procesos para que mueran ordenadamente. Ar!.

Permalink Dejar un comentario