GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo usar Ctrl+C para eliminar todos los procesos en segundo plano iniciados en un script Bash?

Actualización:trap requiere eliminar SIG prefijo bajo condición, aunque algunos shells admiten incluirlo. Ver comentario a continuación.

El signo "&" ejecuta un comando en segundo plano en un nuevo proceso. Cuando finaliza su proceso principal (el comando que ejecuta el script bash en su caso), este proceso en segundo plano restablecerá su proceso principal a init (proceso con PID 1), pero no morirá. Cuando presionas ctrl+c , está enviando una señal de interrupción al proceso en primer plano y no afectará al proceso en segundo plano.

Para eliminar el proceso en segundo plano, debe usar kill comando con el PID del proceso en segundo plano más reciente, que podría obtenerse mediante $! .

Si desea usar ctrl+c para eliminar tanto el script como el proceso en segundo plano, puede hacer esto:

trap 'kill $BGPID; exit' INT
sleep 1024 &    # background command
BGPID=$!
sleep 1024      # foreground command of the script

trap modifica el manejador de trampas del SIGINT (trap requiere eliminar el SIG prefijo pero algunos shell pueden admitir incluirlo), por lo que el script eliminará el proceso con $BGPID antes de que salga.


Linux
  1. ¿Cómo encontrar todos los procesos secundarios?

  2. bash:elimina silenciosamente el proceso de la función de fondo

  3. ¿Cómo matar todos los procesos con un nombre parcial dado?

  4. ¿Cómo eliminar todos los procesos en segundo plano en zsh?

  5. ¿Cómo usar kill SIGUSR2 en bash?

¿Cómo matar un proceso en Linux? Comandos para Terminar

Cómo matar un proceso en Linux

Cómo usar el comando htop para monitorear los procesos del sistema en tiempo real

Cómo matar procesos Zombie en Linux

Cómo enviar procesos a segundo plano en Linux

Cómo matar procesos Zombie en Ubuntu