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.
tail -n 5 /var/log/test.logSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
grep 'hello' /var/log/test.logSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
grep -c ERROR /var/log/test.logSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
cat /var/log/test.log | grep 'hello' | tail -n 3Se 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.
find / -name 'test.log' 2>/dev/nullSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
which lsSe 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.
ps -ef | grep workerSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
pgrep -f lab-workerSe 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.