martes, 19 de mayo de 2009

Información del sistema

Linux informa de prácticamente todo lo relacionado consigo mismo y con los programas que esta ejecutando, solo hay que saber donde mirar.

Información básica sobre nuestra máquina

$ uname -a

Nos informa sobre el sistema operativo, la versión del kernel, el nombre asignado a la máquina, el tipo de procesador instalado.

El arranque

Durante el arranque el kernel detecta gran cantidad de hardware de nuestro sistema, aportando información importante, como nombre de las unidades detectadas, puertos, protocolos de red activados, periféricos. Esta información suele salir muy rápido, para verla con mas tranquilidad solo hay que teclear:

$ dmesg | more

El entorno

$ env

Nos muestra todas las variables de entorno definidas y sus valores.

Memoria

$ free

Nos da un informe sobre el estado de la RAM física, así como de la swap, el parámetro -m muestra los datos en megas.

$ top

Tambien nos indica lo que esta consumiendo cada proceso activo y el estado global de la CPU.

El directorio /proc

Es una imagen de la memoria, y en ella hay gran cantidad de información valiosa, la mayoría de los archivos que contiene son de texto, muy informativos y su nombre es autodescriptivo, por ejemplo el archivo /prot/interrupts muestra información muy valiosa sobre las IRQs, para ver el contenido de estos archivos basta con usar:

$ cat /proc/archivo

Procesos

Un proceso es cualquier programa ejecutandose, son procesos todos los programas que lancemos, las consolas, los demonios de sistema .
La multitarea real de Linux unido al gran numero de procesos (mas de 20) que pueden estar corriendo a la vez en un sistema "normal" hacen que conocer el control de procesos (o tareas) sea
importante.


Listando procesos

$ ps

Lista procesos. Opciones interesantes son (no llevan "-" delante!) a (muestra todos los procesos, aunque sean de otro usuario), u (información adicional del usuario y del proceso). Ademas de ps, podemos usar la orden

$ top

Nos informa de los procesos actuales y aparte indica los recursos que consumen, la memoria libre, la hora y otros datos de interés. El PID: es el numero con el que el sistema identifica un proceso. Es muy importante conocerlo, pues se usa para referenciar procesos en multitud de comandos. Es la primera columna del comando

$ ps au

Controlando procesos

$ kill SIGNAL PID

o

$ killall SIGNAL nombre_de_proceso

Envía la señal SIGNAL al proceso, SIGNAL puede ser -9 (matar proceso), -1 (reiniciar proceso). Por ejemplo

$ killall -9 sendmail

Elimina el programa sendmail de la memoria.

Interrumpir procesos

[Ctrl]+[c] mata el proceso actual que se encuentra en primer plano, [Ctrl]+[z] envía el proceso actual a segundo plano y para su ejecución, aunque no lo elimina de la memoria.

Moviendo procesos

Los procesos lanzados por el usuario pueden moverse de primer a segundo plano, para permitir seguir usando la consola aun cuando el proceso no ha acabado. La manera mas sencilla de lanzar un proceso a segundo plano es lanzandolo como

$ proceso &

Para listar los procesos en segundo plano usamos la orden

$ jobs

Para devolver un proceso en segundo plano a primer plano se usa la orden

$ fg numero

Donde numero es el primer parámetro que jobs asigna a cada proceso.

lunes, 18 de mayo de 2009

Comandos de disco

A parte de archivos y directorios, hay mas cosas en el disco que debemos conocer:

Espacio disponible

$ df

Nos da información sobre la unidad actual, el nombre de la unidad, la capacidad total, el uso, el espacio libre ... la opción mas importante es -h que hace que la salida sea mas legible (usa unidades fáciles de leer).

Espacio usado

$ du

Indica cuanto espacio usa el directorio actual y todos sus subdirectorios. De nuevo una buena opción es -h (mas legible) y -s para hacer solo un sumario y no dar información de todos los subdirectorios.

Sistema de archivos

ATENCIÓN! estos comandos son peligrosos, y por lo tanto, solo pueden realizarlos root.

$ fsck /dev/dispositivo

Chequea la integridad del sistema de archivos del dispositivo.

$ mkfs -t tipo /dev/dispositivo

Crea un sistema de archivos del tipo especificado en el dispositivo (Por ejemplo: $ mkfs -t ext2)

$ dev/fd0

Formatea un disket con el sistema de archivos de linux.