jueves, 12 de noviembre de 2009

Ordenes en una terminal - dmesg

Con esta receta, comenzare una serie, con las ordenes mas comunes en consola, que usamos habitualmente, descripción, usos habituales, donde usarlos y formas de usarlos para solucionarnos la vida con Linux.

 El comando dmesg se utiliza para escribir los mensajes del kernel de Linux y de otros sistemas operativos basados en Unix en la salida estándar, que por defecto es la pantalla.

 Un kernel es el núcleo de un sistema operativo. Se trata de la primera parte del sistema operativo que se carga en memoria y arranca el ordenador(es decir,hasta que se pone en marcha), y que controla casi todo en un sistema. Los numerosos mensajes que genera el núcleo, que aparecen en la pantalla cuando un ordenador arranca, mostrara los dispositivos de hardware que el kernel detecta e indicara si es capaz de configurarlos.

dmesg obtiene sus datos mediante la lectura del búfer de anillo del núcleo. Un buffer es una porción de memoria de una computadora que se reserva como un lugar de almacenamiento temporal de datos que están siendo enviados o recibidos desde un dispositivo externo, como una unidad de disco duro (HDD), la impresora o el teclado. Un búfer de anillo es un buffer de tamaño fijo para que cualquier nuevo dato añadido a sobrescribe los datos más antiguos en el mismo.

 dmesg puede ser muy útil para solucionar problemas o simplemente tratando de obtener información sobre el hardware en un sistema. Su sintaxis básica es

    dmesg [options]

 Invocar dmesg sin ninguna de sus opciones (que se usa con frecuencia) escribe todos los mensajes del núcleo a la salida estándar. Esto usualmente produce líneas demasiado numerosos como para caber en la pantalla a la vez, y por lo tanto sólo los mensajes finales son visibles.
Sin embargo, la salida puede ser redireccionada hacia otros comandos mediante el uso de un tubo | (designado por el carácter de barra vertical), permitiendo así que los mensajes de inicio puedan ser visto en una pantalla completa a la vez:

    dmesg | less

 Esto permite que la salida pase a una pantalla completa pulsando la barra espaciadora, hacia atrás presionando la tecla B y eliminado con la tecla q. (El comando more se podrían haber utilizado aquí en lugar de menos de mando, sin embargo, menos es más reciente que más y tiene funciones adicionales, incluyendo la posibilidad de volver a las páginas anteriores de la salida.)

 Cuando un usuario se encuentra con un problema con el sistema, puede ser conveniente escribir la salida de dmesg a un archivo y luego enviar el archivo por correo electrónico a un administrador de sistemas o de otra persona que sepa de asistencia. Por ejemplo, la salida puede ser redirigida a un archivo llamado dmesginfo.txt mediante el operador de redirección de la salida (designada por un soporte en ángulo hacia la derecha) como sigue:

    dmesg >dmesginfo.txt

 Debido a la longitud de la salida de dmesg, puede ser conveniente a la tubería de salida hacia grep, un filtro que busca las líneas que contienen la cadena (es decir, la secuencia de caracteres) que le sigue. La opción-i puede ser utilizada para decirle a grep para ignorar el caso (es decir, en minúsculas o mayúsculas) de las letras en la cadena. Por ejemplo, el comando siguiente se enumeran todas las referencias a USB (bus serie universal) los dispositivos en los mensajes del kernel:

    dmesg | grep -i usb

 Y el siguiente dice dmesg para mostrar todos los puertos serie (que son representados por la cadena TTY):

    dmesg | grep -i tty

 El dmesg y la combinación grep también se puede utilizar para mostrar la cantidad de memoria física (es decir, RAM) está disponible en el sistema:

    dmesg | grep -i memory

 Los controles de comando siguiente para confirmar que el disco duro (s) se está ejecutando en el DMA (Direct Memory Access) en modo:

    dmesg | grep -i dma

 La salida de dmesg se mantiene en el archivo de registro / var / log / dmesg, y por lo tanto también puede ser vista fácilmente mediante la lectura de ese archivo con un editor de texto, como nano o gedit, o con un comando como CAT, por ejemplo:

    cat /var/log/dmesg | less