¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Linux a diario 3: registros y procesos

Aquí está la lección completa para leer. Crea una cuenta gratuita para practicarla en un laboratorio en vivo.

Laboratorio de máquina virtual9 min de lectura8 comandos

La respuesta está en el registro

Los pagos de una tienda dejan de funcionar a medianoche. Nadie ha tocado nada. Lo primero que hace la ingeniera es leer el final de un archivo donde el programa de pagos anota lo que hizo. Ahí dice qué falló, y a qué hora.

Al terminar esta lección

Nota

Puedo leer un registro y parar un proceso que se porta mal.

Palabras clave

  • Registro (log): un archivo donde un programa anota lo que hizo.
  • Tubería: |, que pasa la respuesta de un comando al siguiente.
  • Proceso: un programa que se está ejecutando ahora.
  • PID: el número que identifica un proceso.
  • Señal: un mensaje que se envía a un proceso, por ejemplo parar.

Para empezar: lo que ya sabes

Nota

Responde mentalmente. 1. ¿Qué hace >> con un archivo? 2. ¿Qué es una ruta? 3. ¿Qué comando muestra un archivo entero? Hoy conocerás un comando que muestra solo el final de un archivo.

Antes de empezar

Nota

Pulsa Iniciar el laboratorio en la barra superior de esta lección. Este laboratorio es una máquina Ubuntu entera para ti, así que tarda un poco más en arrancar que un contenedor. Cada botón Ejecutar escribe su comando en el terminal de la máquina, uno detrás de otro, en la misma sesión. Si alguno dice que la máquina aún está arrancando, espera unos segundos y púlsalo otra vez. Donde la lección dice Escribe esto, el comando no termina solo o te pregunta algo: pulsa Abrir el terminal en la barra y escríbelo tú.

Leer el final de un registro y buscar en él

El final de un registro es lo más reciente. tail -n 5 muestra las cinco últimas líneas. grep muestra solo las líneas que contienen unas palabras, y con -c las cuenta. El último comando une tres con tuberías: lee todo el registro, se queda con las líneas hello y muestra las tres más recientes.

Comando
tail -n 5 /var/log/test.log

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
grep 'hello' /var/log/test.log

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
grep -c ERROR /var/log/test.log

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
cat /var/log/test.log | grep 'hello' | tail -n 3

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribe esto: seguir un registro mientras crece

En el terminal, escribe tail -f /var/log/test.log. Las líneas nuevas aparecen según se escriben. Pulsa Ctrl+C para parar. Un botón Ejecutar no puede pulsar Ctrl+C, por eso este lo escribes tú. También verás tail -200f en apuntes de otras personas: muestra primero las últimas 200 líneas y luego sigue.

Comprueba

Consejo

¿Qué comando muestra solo el final de un archivo y cuál se queda con las líneas que tienen una palabra? Respuesta: tail y grep. Unidos por una tubería responden a casi todas las preguntas sobre un registro.

Encontrar un archivo y un comando

find / -name 'test.log' busca en toda la máquina. Hay zonas que no puedes mirar, así que 2>/dev/null tira esos mensajes de error. which ls dice dónde vive un comando.

Comando
find / -name 'test.log' 2>/dev/null

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
which ls

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Encontrar un proceso

Un programa en marcha es un proceso y tiene un número, su PID. ps -ef los lista todos, y | grep worker se queda con las líneas que tienen esa palabra. Salen dos líneas: el proceso, y el grep que acabas de ejecutar. pgrep -f lab-worker muestra solo el número.

Comando
ps -ef | grep worker

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
pgrep -f lab-worker

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribe esto: páralo

Toma el número de la respuesta anterior. En el terminal, escribe kill 1234, con tu número, y ejecuta otra vez ps -ef | grep worker: el proceso ya no está. Ahora busca el segundo proceso con ps -ef | grep stubborn, escribe kill y su número, y mira de nuevo. Sigue ahí, porque ignora una petición educada. Escribe kill -9 y su número, y se para. top muestra en directo los procesos que más trabajan; pulsa q para salir.

Un error frecuente

Advertencia

Mucha gente cree que kill -9 es simplemente un kill más fuerte y lo usa el primero. kill pide a un programa que termine, así que puede guardar su trabajo y recoger. kill -9 se lo lleva de golpe, sin recoger nada, y puede dejar archivos a medio escribir. Usa kill, espera unos segundos, y usa -9 solo cuando el programa siga sin pararse.

Comprobación final

Consejo

Responde sin mirar atrás. 1. ¿Cómo se para tail -f? 2. ¿Qué hace 2>/dev/null? 3. ¿Qué pruebas primero, kill o kill -9? Respuestas: con Ctrl+C; tira los mensajes de error; kill.

Para el profesorado

Consejo

Esta lección se practica en un laboratorio de máquina virtual: cada alumno tiene su propia máquina Ubuntu, y Ejecutar escribe en su terminal y muestra lo que salió. Ideas clave: 1. tail y grep leen un registro. 2. find y which localizan cosas. 3. ps encuentra un proceso y kill lo para. Error frecuente: usar kill -9 el primero. Material: el laboratorio y un navegador. Consejo: ponga tail -f en la pantalla del profesor y pida a la clase que diga cuándo llegará la línea siguiente. El laboratorio no tiene comprobación y no califica nada; si quiere una entrega, ponga una usted.

Sobre este laboratorio y su código: Laboratorio de comandos de Linux de cada día: los treinta comandos que se escriben de memoria

¿Enseñas a una clase? Asigna estas lecciones a tus estudiantes con calificación y un laboratorio para cada uno.