sábado, 16 de febrero de 2013

Encontrar quien está haciendo qué en GNU/Linux

Aunque estos comandos solo los he probado en Ubuntu 12.04, deberían funcionar en otros SO GNU/Linux, solo hace falta tener instalado lsof y ps.
En mi experiencia ps siempre está presente, pero extrañamente lsof no estaba presente en el servidor donde ejecuté estos pasos aunque esto se soluciona simplemente instalándolo. Ubuntu o Debian instalamos lsof ejecutando el siguiente comando:
sudo aptitude install lsof

Ahora supongamos que queremos averiguar ¿cual servidor de correo está corriendo actualmente? Lo más simple sería preguntar al que lo instaló, pero si por alguna razón eso no es posible...
Partimos de que sabemos que el puerto donde está escuchando el servidor de correo es el 25 y listamos los archivos abiertos relacionados:

del resultado anterior nos interesa tomar el valor del PID y lo usamos para filtrar la salida del comando ps -ef:
En el resultado de ejecutar el comando ps vemos que es postfix el que lanzó el proceso 2446, por lo tanto  nuestro servidor de correo es el ya mencionado postfix.

De forma similar se pueden verificar otros servicios por ejemplo ¿quién está escuchando en el puerto http(80)?
sudo lsof -i tcp:80

El comando lsof y la forma como usarlo para determinar el comando que invocó el mail server encontré en: http://ubuntuforums.org/showthread.php?t=871508

Espero les sea de ayuda.

Hasta la próxima.