Aprende leyendo en orden

Comprobar y detener procesos — ps / kill

Aprende a listar los procesos en ejecución con ps, a consultar tu propio PID con $$, y a detener un proceso que enviaste a segundo plano con & usando kill — todo práctico en una terminal del navegador.

Ver los procesos en ejecución — ps

Un proceso es cada programa individual en ejecución.

ps es el comando que lista los procesos que se están ejecutando ahora mismo.

A cada proceso se le asigna un número único llamado PID (ID de proceso), que sirve de marca cuando lo detienes más tarde.

Cuando la lista es larga, pásala a grep, como ps | grep sleep, para acotar los procesos por nombre.

Qué es un proceso — una instancia en ejecución de un programa
programashprogramasleepprogramaviprocesoshprocesosleepprocesoviPID 101PID 142PID 188
Ejecutar un programa lo convierte en un 'proceso', y a cada uno se le asigna un PID único. ps lista estos procesos en ejecución.
ComandoSignificado
psListar los procesos en ejecución con sus PID
ps | grep nameAcotar los procesos por nombre
echo $$Mostrar el propio PID de la shell actual
cmd &Ejecutar un comando en segundo plano

Puedes extraer el propio PID de la shell con la variable especial $$.

$$ es una variable especial que la shell rellena con su propio PID.

Ejecutar echo $$ muestra el número de la shell en la que estás escribiendo, y encontrarás ese mismo número en la lista de ps.

Leer el proceso actual con ps y $$
pslista los procesoscon sus PIDecho $$muestra el PIDde la shell actual
ps lista los PID de los procesos en ejecución; echo $$ muestra el PID de la shell actual.
ps          # lista de procesos en ejecución (con sus PID)
echo $$     # el propio PID de esta shell
ps -ef      # una lista más detallada (el formato varía según el entorno)

① Ejecuta ps para mostrar la lista de procesos en ejecución actualmente.

② Ejecuta echo $$ para mostrar el PID (número) de la propia shell en la que estás escribiendo.

③ Ejecuta ps de nuevo y confirma visualmente que el número del paso ② aparece en la lista. (Ejecútalo correctamente y aparecerá una explicación.)

Linux console
0 / 2 completado(s)
Loading Linux Terminal...

Ejecución en segundo plano y detención — & y kill

Añadir & al final de un comando lo ejecuta en segundo plano, lo que te permite pasar a la siguiente operación sin esperar a que termine.

sleep 30 & ejecuta en segundo plano un proceso que solo espera, sin hacer nada durante 30 segundos, lo que lo hace ideal para practicar cómo detener un proceso.

Para detener un proceso en segundo plano, pasa su PID a kill.

La shell muestra el PID justo después de iniciarlo con &, y también puedes consultarlo en la lista de ps.

Pasar el PID a kill envía una señal de terminación a ese proceso.

Para un proceso que no se detiene con un kill PID normal, envía una señal de cierre forzado con kill -9 PID.

ComandoSeñal enviadaUso
kill PIDSIGTERM (petición de salir)Detención normal; deja que el proceso limpie
kill -9 PIDSIGKILL (cierre forzado)Terminar a la fuerza un proceso que no se detiene
De la ejecución en segundo plano a la detención
sleep 30 &corre en segundoplano; muestra el PIDpshalla el PID desleep en la listakill PIDtermina el procesocon ese PID
Envíalo a segundo plano con &, halla el PID con ps y termina ese proceso con kill.

Dale a kill el PID correcto

kill envía una señal de terminación al proceso con el PID que pasas.

Equivocarte de número detendría un proceso distinto, así que comprueba el PID objetivo en la lista de ps antes de ejecutarlo.

Sobre kill en este entorno

En este entorno del navegador, pasar un PID a kill puede no detener el proceso como lo haría en un sistema real, y puede que veas No such process.

En este curso aprendes la forma de los comandos kill PID / kill -9 PID.

En un servidor real, el flujo de comprobar el PID con ps y detenerlo con kill funciona exactamente como se muestra.

sleep 60 &     # ejecutar en segundo plano un proceso que espera 60 segundos
ps             # hallar el PID de sleep en la lista
kill 123       # pasar el PID que hallaste (p. ej. 123) para terminarlo

① Ejecuta sleep 30 & para iniciar en segundo plano un proceso que solo espera 30 segundos.

② Ejecuta ps | grep sleep para acotar la lista a la línea de sleep y hallar su PID (número).

③ Pasa el número que hallaste en el paso ② a kill para terminar ese proceso sleep.

Linux console
0 / 3 completado(s)
Loading Linux Terminal...
QUIZ

Verificación de conocimientos

Responde cada pregunta una a una.

Pregunta 1¿Qué muestra ps al ejecutarlo?

Pregunta 2¿Qué muestra echo $$?

Pregunta 3¿Qué ocurre cuando añades & al final de un comando?