¿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

Detener un programa de forma limpia (señales)

Después de esta lección: Puedo encontrar un proceso y detenerlo de la forma correcta.

Lección de 50 min15 comandosLaboratorio de comandos de Linux de cada día: los treinta comandos que se escriben de memoria

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

PalabraQué significaEjemplo
Procesoun programa que se está ejecutando ahora
PIDel número que identifica a un proceso4162
Señalun mensaje corto que se envía a un procesoTERM
Primer planoel proceso que tiene tu teclado
Segundo planoun proceso que sigue mientras escribes otra cosa
Trabajoun 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

Comando
ps

Se 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

Comando
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

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.

Ejemplo: una línea de ps -ef

ColumnaEjemploSignificado
UIDstudentQuién es el dueño del proceso
PID4162El número que lo identifica
PPID1El PID de su padre
STIME17:59Cuándo empezó
CMD/bin/bash /usr/local/bin/lab-workerLa 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úmeroNombreQué hace
15TERMPide al proceso que termine. Es la señal por defecto
9KILLRetira el proceso. No se puede ignorar
2INTLo que envía Ctrl+C
1HUPA 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?

Comando
kill -l 15

Se 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?

Comando
kill -l 9

Se 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

Comando
pkill -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.

¿Sigue ahí?

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.

Pídeselo al testarudo

Comando
pkill -f lab-stubborn

Se 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?

Comando
pgrep -f lab-stubborn

Se 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

Comando
pkill -9 -f lab-stubborn

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

¿Y ahora?

Comando
pgrep -f lab-stubborn

Se 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

Comando
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

Comando
jobs

Se 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

Comando
kill %1

Se 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

Comando
ps -eo pid,user,%cpu,%mem,cmd --sort=-%cpu | head -n 4

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

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 este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.