Wednesday 8 July 2015

Consejos y trucos, artículos básicos sobre configuraciones que ayudan a un mejor desempeño de nuestros SO's. Cada proceso ha sido personalmente comprobado.








En este blog continuamos con la parte de comandos referentes a estadísticas, asi que sigamos aprendiendo acerca de los maravillosos y geniales comandos Linux.

El cajón de los comandos Linux es una guía de referencia rápida para todos los usuarios Linux que desean aprender los comandos de este gran SO. Los comandos se dividen en 15 categorías, lo cual nos permite tener un mayor entendimiento acerca de que comando utilizar en una específica situación. El agradecimiento total al creador de esta guía +Bobbin Zachariah.

Esta guía puede ser utilizada ya sea para usuarios nuevos o avanzados, proveyendo el mejor esfuerzo para dar a conocer los comandos Linux más relevantes. 

Así que empecemos con la 4ª parte de los comandos referentes a Estadísticas.

$ lsof

"lsof" que en español significa, lista de archivos abiertos, es una conocida herramienta de monitorización de sistemas operativos tipo Unix que se utiliza para mostrar todos los archivos de disco que mantienen abiertos los procesos, incluyendo los sockets, tuberías, entre otros tipos. Con la ayuda de este comando podemos monitorizar lo que realmente está pasando y ver los detalles de los archivos que están abiertos en alguna partición en particular. Esta herramienta también es de mucha ayuda para el administrador de sistemas profesional para realizar tareas a nivel avanzado como cálculos de uso de disco o de montaje/desmontaje de dispositivos etc.

Instalando lsof

Esta herramienta es muy popular y debido a su amplio uso, en la mayoría de distribuciones Linux ya viene preinstalada. Pero si nos topamos con que no esta instalada en nuestro sistema, podemos instalarlo ejecutando yum install lsof (Fedora, CentOS y RHEL) o sudo apt –get install lsof  (Debian o Ubuntu)

Veamos como podemos utilizar este impresionante comando para monitorizar y administrar nuestro sistema Linux.



1- Listar procesos abiertos de un archivo específico.

Para obtener una lista de procesos abiertos por algún archivo específico, simplemente ejecutamos el comando lsof  seguido de la ruta del archivo. Es decir, para ver los procesos abiertos por el archivo de registro /var/log/syslog ejecutamos:




2 - Ver lista de procesos usando una partición montada.

Al tratar de desmontar alguna partición, se podría haber visto el siguiente error "Dispositivo o Recurso Ocupado", esto es porque esa partición en particular todavía está siendo utilizada por algunas tareas. Tenemos que utilizar lsof para averiguar los procesos y detenerlos antes de desmontar con éxito la partición. Con el fin de ver que procesos están utilizando alguna partición en particular, lo hacemos con el comando lsof para encontrar dichas tareas ejecutándose.


La mayoría de columnas son entendibles les explicaré las columnas FD y TYPE.

FD: Representa la descripción del archivo, algunos de los valores FD son:
- cwd: Directorio actual de trabajo.
- txt: Archivo de texto.
- mem: Archivo de mapa de memoria.
- mmap: Mapa de memoria de dispositivo.
- NUMBER: Representa el descriptor actual de archivo. La letra después del
  número (3u) representa el modo en el que el archivo esta abierto, r lectura,
  w escritura, u lectura y escritura.

TYPE: Específica el tipo del archivo, algunos valores de TYPE son:
- REG: Archivo regular.
- DIR: Directorio.
- FIFO: Primero en entrar primero en salir.
- CHR: Archivo especial de caracteres.

Si queremos una referencia completa de FD y TYPE solo escribimos man lsof en nuestra terminal.

3 - Listar los archivos abiertos por algún usuario específico.  
Para ver la lista de archivos abiertos por algún usuario en particular, utilizamos la opción -u con el comando lsof.




4 - Verificar que  procesos esta utilizando un puerto en particular.
Muchas veces nos encontramos con que algunos servicios no se pueden unir a un puerto porque este ya está siendo utilizado por otros procesos. En estos casos, es necesario encontrar el proceso por medio del número de puerto y detenerlo. Un ejemplo puede ser:


5 - Lista de conexiones de red.
Para poder ver la lista de conexiones de red, utilizamos la opción -i luego del comando lsof. Veamos:
 



6 - Averiguar los archivos abiertos por algún demonio en particular. 
Para mostrar todos los archivos abiertos por un demonio en específico, utilizaremos el parámetro -c con el comando lsof seguido del nombre del demonio.




7 - Listar todos los archivos abiertos por ID del proceso. 
Podemos utilizar la opción -p con el comando lsof para averiguar la lista de los archivos abiertos por algún proceso en particular.



Tenemos que reemplazar PID con el ID de proceso.



8 - Detener procesos para un usuario en particular.
Podemos matar todos los procesos pertenecientes a algún usuario  especificamente, mediante el uso del siguiente comando:


Cambiar el NOMBRE DEL USUARIO por tu usuario real.

9 - Averiguar puertos y servicios de mapeo. 
Podemos averiguar los puertos y sus servicios de mapeo asociados en el sistema Linux con el comando lsof. El siguiente comando nos mostrará los detalles de asignación para los diferentes servicios en ejecución y su interfaz de puertos asociados en una red IPv4:



El siguiente comando nos mostrará el mapeo de información para la interfaz de red IPv6:



10 - Encontrar programa en ejecución por un puerto desconocido. 
Con el fin de comprobar si existen puertos sospechosos en nuestro sistema simplemente ejecutamos el comando netstat.




En base a los resultados de la imagen de arriba el puerto 5500 es desconocido entonces podemos encontrar el programa que utiliza ese puerto con el siguiente comando:

 
11 - Ver todas las conexiones TCP o UDP. 
Usaremos el siguiente comando para ver TCP y UDP en nuestro sistema Linux.




12 - Ejecutando lsof en modo de repetición.
También podemos correr lsof en modo de repetición, lo que significa que mostrará los resultados y luego se detendrá durante unos segundos y mostrará resultados actualizados de nuevo sobre la base del mismo criterio. Es muy útil para tratar problemas de desempeño en los sistemas Unix-like. Ejecutaremos el comando lsof seguido de la opción -r  para retrasar intervalos de segundos.


Conclusión.
Lsof es una herramienta fácil de usar y ligera, que se utiliza a diario por miles de administradores de sistemas para solucionar problemas con los sistemas Linux. Podemos explorar más detalles acerca del comando lsof con man, info o help en la consola. 


$ watch

Un administrador de sistemas tiene que mantener actualizado y seguro su sistema. Hay algunas otras actividades que mantienen su registro, estos registros se actualizan periódicamente; para comprobar estas actualizaciones, los comandos se ejecutan en varias ocasiones. Por ejemplo, para la simple lectura de un archivo, comandos como head, tail, cat, etc son usados. Estos comandos necesitan ser ejecutados repetidamente, el comando watch puede ser utilizado para repetir un comando a intervalos regulares.

Watch es un simple comando, con algunas opciones. La sintaxis básica del comando watch es:
 

Watch corre el comando especificado cada 2 segundos de forma predeterminada; tiempo que se cuenta entre la terminación de ejecución del comando y el inicio de la siguiente ejecución. Como ejemplo simple, el comando watch se puede utilizar para verificar actualizaciones de registro, las actualizaciones se anexan al final del archivo, así que el comando tail puede ser usado con watch para ver las actualizaciones de un archivo, el comando continúa ejecutándose hasta que presionamos CTRL + C en nuestro teclado.

Veamos unos ejemplos:

- Verificar los errores / avisos / advertencias que se generan en tiempo de ejecución  por segundos.




- Observar el uso del disco después de un intervalo de tiempo especificado.



- Es muy importante para los administradores estar pendiente del volumen de espera de entrada y salida causado por operaciones de disco, especialmente en transacciones Mysql. El comando seria:


- Verificar la carga del servidor y el tiempo de actividad  cuando esta en ejecución.




-  Verificar el tamaño de fila de Exim a la hora que un cron se ejecuta para enviar notas a los suscriptores.




1) Usando con retraso.


Podemos cambiar el intervalo predeterminado de ejecución entre comandos con la opción  -nEl siguiente comando ejecutará  el próximo comando después de 5 segundos:





2) Comparando la salida continua.  
Si usamos la opción -d con el comando watch, se pondrá ver  las diferencias entre la primera salida del comando y cada una de las salidas del próximo comando de forma acumulada.


2.1- Vamos a ver las salidas de tiempo sucesivos extraídos mediante el comando watch y observar como se pone la diferencia entre comandos.


El primer  tiempo es la captura cuando el comando se ejecuta, la siguiente iteración se repetirá después de 15 segundos.


Sobre la ejecución de la siguiente iteración, se puede ver que toda la salida es exactamente igual, excepto los segundos han aumentado del 53 a 55 y se puede ver resaltado.




2.2- Experimentando entre la diferencia de dos salidas sucesivas del comando "uptime" repetida por watch.



Ahora la diferencia entre el tiempo se pone en negrita o resaltado, así como las tres  entradas de carga.


3) Salida sin título.  
Si no deseamos mostrar los detalles adicionales acerca de la demora de la iteración y comando real dirigido por watch entonces usamos la opción -t.


Veamos un ejemplo de salida de este comando:



Ver la ayuda.

Breves detalles del comando watch se pueden encontrar escribiendo el siguiente comando en la consola.

 

Ver la versión.

Ejecutamos el siguiente comando en la terminal para comprobar la versión del watch.


FALLOS. 
Desafortunadamente, al cambiar el tamaño de la terminal, la pantalla no se amplia correctamente hasta la próxima actualización programada. También toda acción o diferencia importante se pierde en esa actualización.

Conclusión.
Watch es una potente utilidad para administradores de sistemas, ya que puede ser usado para monitorizar registros, operaciones, funcionamiento y rendimiento del sistema en tiempo de ejecución. Se puede formatear fácil y retrasar la salida de la utilidad watch. Podemos explorar más detalles acerca de este comando  con man, info o help en la consola.

Otro comando que es muy útil en estadística es free del cual no daremos mucho detalle ya que lo hemos explorado en la parte 3 de Hardware.

Saludos especiales a tod@s espero este aporte pueda ser de su ayuda. Si les fue útil compartan y comenten.