El programa de facturas que se colgó
Un almacén usa un programa que genera las facturas del día. A las seis de la tarde se queda colgado.
El responsable no quiere reiniciar el servidor. Hay cuarenta programas más funcionando.
Tienes que encontrar ese programa, pararlo y no tocar el resto.
Al final de esta lección
Nota
Puedo encontrar un proceso y detenerlo de la forma correcta.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Proceso | un programa que se está ejecutando ahora | |
| PID | el número que identifica a un proceso | 4162 |
| Señal | un mensaje corto que se envía a un proceso | TERM |
| Primer plano | el proceso que tiene tu teclado | |
| Segundo plano | un proceso que sigue mientras escribes otra cosa | |
| Trabajo | un proceso que la terminal arrancó y apunta en una lista | [1] |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Cada programa en marcha es un proceso
Cuando arrancas un programa, el sistema crea un proceso. El proceso recibe un número, su PID.
Un proceso tiene además un dueño, una hora de inicio y un padre: el proceso que lo arrancó. El primer proceso que arranca la máquina, systemd en Ubuntu, tiene el PID 1. Casi todos los demás descienden de él.
Los procesos de tu sesión
psSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Todos los procesos, y solo los del laboratorio
ps -ef | grep lab-Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Solo el PID de lab-worker
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.
Ejemplo: una línea de ps -ef
| Columna | Ejemplo | Significado |
|---|---|---|
| UID | student | Quién es el dueño del proceso |
| PID | 4162 | El número que lo identifica |
| PPID | 1 | El PID de su padre |
| STIME | 17:59 | Cuándo empezó |
| CMD | /bin/bash /usr/local/bin/lab-worker | La orden que se ejecuta |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Una señal pide a un proceso que pare
Para detener un proceso le envías una señal. kill 4162 envía la señal 15, llamada TERM. Le pide que termine. Un buen programa guarda su trabajo y se cierra.
kill -9 4162 envía la señal 9, llamada KILL. El sistema retira el proceso al instante. El programa no tiene ocasión de recoger.
Cuatro señales que conviene conocer
| Número | Nombre | Qué hace |
|---|---|---|
| 15 | TERM | Pide al proceso que termine. Es la señal por defecto |
| 9 | KILL | Retira el proceso. No se puede ignorar |
| 2 | INT | Lo que envía Ctrl+C |
| 1 | HUP | A menudo significa: vuelve a leer tu configuración |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
¿Cómo se llama la señal 15?
kill -l 15Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
¿Y la señal 9?
kill -l 9Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Detén los dos programas del laboratorio
Escribir un PID a mano es lento, y un botón no conoce el tuyo. pkill -f nombre busca el proceso por su nombre y le envía una señal.
El primero termina con una petición normal. El segundo la ignora. Mira lo que imprime pgrep después de cada paso. Si no imprime nada, ese proceso ya no existe.
Pide al primero que termine
pkill -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.
¿Sigue ahí?
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.
Pídeselo al testarudo
pkill -f lab-stubbornSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
¿Y este sigue?
pgrep -f lab-stubbornSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Retíralo con la señal 9
pkill -9 -f lab-stubbornSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
¿Y ahora?
pgrep -f lab-stubbornSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un error frecuente
Advertencia
Mucha gente cree que kill -9 es un kill más fuerte, y lo usa el primero. kill deja que el programa guarde y recoja. kill -9 no le da ocasión y puede dejar un archivo a medias. Envía TERM, espera unos segundos y usa 9 solo si el proceso no se detiene.
Primer plano, segundo plano y top
Un programa que lanzas corre en primer plano. Tiene tu teclado hasta que acaba. Ctrl+C le envía la señal 2 y casi siempre lo detiene.
Si terminas la orden con &, corre en segundo plano. La terminal lo apunta como trabajo y lo numera: [1].
Escribe top para ver en vivo los procesos que más trabajan. Sal con q. Un botón no puede pulsar q: escríbela tú.
Lanza una espera de cinco minutos
sleep 300 &Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Lista tus trabajos
jobsSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Detén el trabajo 1
kill %1Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Los tres procesos más activos, una vez
ps -eo pid,user,%cpu,%mem,cmd --sort=-%cpu | head -n 4Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.