Tuesday, 19 May 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.




Y nuevamente  les traigo la continuación de la serie de Blogs en los que aprenderemos 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 1ª parte de los comandos referentes a Hardware.

$ dmesg

Algunas veces sobreestimamos la existencia de registros, para un administrador de sistemas esto es muy importante. Desde un registro podemos analizar que es lo que ha causado un error, Linux tiene dmesg o mostrador de mensajes. ¿Porqué necesitamos saber de dmesg? Comenzemos a explorarlo.

¿Qué es dmesg?
Este es un comando que nos muestra mensajes del kernel en tu pantalla. ¿Que tipo de mensajes imprime dmesg? Pues nos muestra su data leyendo el búfer circular del kernel o también conocido como búfer de anillo (Kernel Ring Buffer). Los datos pueden ser información acerca del disco duro, impresora, teclado, memoria y controladores. Ya que dmesg lee todos los mensajes del búfer de anillo del kernel, el cual es una data en tiempo real, los mensajes salientes pueden ser  muy largos.

¿Cómo ejecutar dmesg?  
Podemos escribir dmesg en nuestra terminal, he aquí una muestra de salida al escribir el comando sin ningún parámetro:



La salida de dmesg es divida en 3 partes

               1- Tiempo: este nos muestra el número de segundos desde la hora
                    de reinicio. Si encontramos  20.091730 significa que el mensaje    
                    es creado 20 segundos después de reiniciar.
               2- Nombre_de_dispositivo: este nos muestra el nombre del 
                   dispositivo.
               3- Mensajes: este es el mensaje actual, de aquí podemos analizar 
                   que esta pasando.

¿Porqué necesitamos dmesg?
Acá un ejemplo real de mi ordenador, tube este error cuando abrí el navegador Chrome.


Y cuando revisé vía dmesg obtube este mensaje.


Ahora está claro, para mi la causa del error fue memoria, esto paso cuando intenté abrir más de 3 pestañas y una de ellas contenía solamente imágenes .gif, así que para la próxima tendré precaución  en cuanto al número y tipo de páginas que abra.

Usando dmesg con el símbolo de operador de canalización, "pipe" ( | )
Al correr dmesg sin parámetro nos produce mensajes "mega largos", para hacer esto fácil de leer, lo combinamos con el símbolo de operador de canalización ( | ). He aquí algunos ejemplos:

Imprimir dmesg con resultados por página.



Imprimir información relacionada a eth. 



Solicitar  información relacionada a usb.


Notemos que el comando grep es en letras minúsculas, Usb  es diferente a usb, para ignorar esta característica usamos el parámetro -i después del comando grep. Comparemos el resultado de este comando en el caso de USB mencionado acá arriba.



Parámetros dmesg
Podemos correr dmesg usando sus parámetros, veamos:

Imprimiendo con hora legible.
Por defecto la manera en que dmesg muestra el tiempo no es legible para el humano, para hacerlo leíble al ojo humano podemos usar el parámetro - -ctime



Por favor nota que el parámetro -ctime podría no ser preciso al hacer una suspensión o reanudación.

No mostrar registros de tiempo.
Si no queremos ver detalles de fecha y hora podemos usar el parámetro -t.



Mostrar una lista simple.
Dmesg puede también únicamente imprimir mensajes de una categoría en particular o con simpleza; para llevar a cabo este propósito usamos el parámetro --facility.



Esta opción nos mostrará mensajes del demonio del sistema únicamente.
Los registros simples soportados son:



Imprimir nivel de registro.
Dmesg puede también mostrarnos registros basados en niveles, para imprimir un resultado como este usamos el parámetro - -level 


Esta opción nos imprime mensaje de errores únicamente.
Los niveles soportados son:



Descodificar simpleza y número de nivel (prioridad)
Podemos poner la información simple y número de nivel sin usar los parámetros --facility o --level . Usamos el parámetro -x para decodificar simpleza y número de nivel en prefijos leíbles para los humanos.



Borrar las salidas dmesg.
Si necesitamos borrar el mensaje del búfer circular usaremos el parámetro -c.


Este mensaje producirá el mensaje dmesg y luego lo borrará. Debes tener privilegios de súper usuario para realizar esta acción. De lo contrario tendrás un error como este:


Si usamos el parámetro -C, entonces los registros serán borrados inmediatamente, y de igual manera necesitamos ser súper usuario para llevar acabo esta acción.


¿Es en verdad borrado?
 Si accidentalmente borramos los registros usando los parámetros -c o -C, en realidad no los hemos eliminado, podemos accesar a ver el archivo de registros en /var/log/kern.log o /var/log/dmesg

Conclusión
Dmesg puede ser usado, para diagnosticar problemas relacionados al sistema, dmesg registra todos los mensajes cada vez que el ordenador es reiniciado; dmseg también graba todos los cambios del sistema en tiempo real. Este es uno de los comandos Linux que debemos saber como administradores de sistema.

Esto ha sido todo en cuanto al uso del comando  dmesg. Para mas información referirse a man, help o info en la consola.




$ cat /proc/cpuinfo

La información del cpu incluye detalles del procesador tales como, la arquitectura, nombre del fabricante, modelo, número de núcleos y velocidad de cada uno de estos, etc. Este comando es uno de los pocos en Linux para obtener detalles del cpu, veamos como se utiliza.
El archivo /proc/cpuinfo contiene detalles de los núcleos en el cpu por separado. Podemos imprimir dicho resultado con less o cat.

Cada procesador o núcleo es listado por separado; detalles de la velocidad, tamaño de caché y nombre del modelo son incluidos en la descripción.
Si queremos contar el número de procesadores usamos grep con wc -l
 El número de procesadores mostrados por /proc/cpuinfo podría no ser en realidad el número de núcleos en el procesador, por ejemplo, un procesador de 2 núcleos y "hyperthreading" seria visto como un procesador de 4 núcleos.

Para obtener el número de núcleos real podemos revisar sus valores únicos con grep 'core id'
 
Aquí nos muestra que tenemos 2 diferentes núcleos identificados, y esto nos indica que en realidad tenemos 2 núcleos.

Esto ha sido todo en cuanto al uso del comando  /proc/cpuinfo. Para mas información referirse a man, help o info en la consola.



$ cat /proc/meminfo

Conociendo acerca de este comando.

/proc/meminfo es uno de los archivos más usado comúnmente en el /proc/  ya que este reporta un gran volumen de información valiosa acerca de la memoria en los sistemas Unix-like. He aquí una breve descripción de lo que cada valor significa.

- MemTotal: El total de la RAM utilizable en KB.
- MemFree: El volumen de RAM física sin ser utilizada por el sistema.
- Buffers: El volumen de RAM física usada por los archivos búfer.
- Cached: El volumen de RAM física usada como memoria caché. Memoria 
                  en el "pagecache" (caché en disco) menos  caché de intercambio.
- SwapCached: Este es el volumen de la memoria de intercambio (swap)
                            usado como memoria de caché. Memoria que una vez sale 
                            para intercambio, es regresada a la vez, pero aun esta en el 
                            archivo de memoria de intercambio.
- Active: El volumen total de búfer o página de memoria de caché, que esta 
               activa. Esta parte de la memoria es del uso reciente y usualmente
               no es reclamada al menos que sea absolutamente necesario.
- Inactive: El volumen total de búfer o página de memoria de caché que esta
                   libre y disponible. Esta es la memoria que no ha sido 
                   recientemente utilizada y puede ser reclamada para otros 
                   propósitos por el algoritmo de paginación.
- HighTotal: Es el volumen de memoria en la región alta, este volumen total 
                      puede variar dependiendo del tipo de kernel utilizado, el kernel
                      usa trucos indirectos para accesar a la región alta de la 
                      memoria. Los datos del caché pueden dirigirse a esta región.
- LowTotal:  El monto total de memoria  que no pertenece a la parte alta.
- LowFree:  El volumen de memoria libre en la región baja. Esta es la 
                     memoria donde el kernel puede ir directamente, todas las 
                     estructuras de datos del kernel necesitan ir a la región baja
                     de la memoria. 
- SwapTotal: Volumen total de memoria de intercambio física.
- SwapFree: Volumen libre total de la memoria virtual.
- Dirty: El monto total de memoria esperando a ser escrito de regreso al 
              disco.
- Writeback: El volumen total de memoria activo siendo escrito de nuevo en 
                        el disco.
- Committed_AS: Un estimado de cuanta RAM necesitariamos para 
                               garantizar en un 99.99% que no nos quedaremos sin 
                               memoria (OOM) a la hora de estar trabajando; 
                               normalmente el kernel forza la memoria, este parámetro
                               se presenta en el peor de los casos y también es incluida
                               la memoria de intercambio.

Ejemplo de salida al ejecutar  cat /proc/meminfo:


Otro comando similar que vale la pena mencionar pero del cual no daré detalles es vmstat el cual proveé mucha buena información acerca de la memoria del sistema, con la opción -s  vmstat imprime una tabla de varios eventos y estadísticas de la memoria.

Esto ha sido todo en cuanto al uso del comando /proc/meminfo. Para mas información referirse a man, help o info en la consola.

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