GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser Ctrl+C pour tuer tous les processus d'arrière-plan démarrés dans un script Bash ?

Mise à jour :trap nécessite la suppression de SIG préfixe à condition, bien que certains shells prennent en charge son inclusion. Voir commentaire ci-dessous.

L'esperluette "&" exécute une commande en arrière-plan dans un nouveau processus. Lorsque son processus parent (la commande qui exécute le script bash dans votre cas) se termine, ce processus d'arrière-plan réinitialisera son processus parent sur init (processus avec PID 1), mais ne mourra pas. Lorsque vous appuyez sur ctrl+c , vous envoyez un signal d'interruption au processus de premier plan, et cela n'affectera pas le processus d'arrière-plan.

Afin de tuer le processus d'arrière-plan, vous devez utiliser le kill commande avec le PID du processus d'arrière-plan le plus récent, qui pourrait être obtenu par $! .

Si vous souhaitez utiliser ctrl+c pour tuer à la fois le script et le processus d'arrière-plan, vous pouvez faire ceci :

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

trap modifie le trap handler du SIGINT (trap nécessite la suppression du SIG préfixe mais certains shell peuvent le prendre en charge) afin que le script tue le processus avec $BGPID avant de quitter.


Linux
  1. Comment trouver tous les processus enfants ?

  2. Comment tuer un processus enfant après un délai d'attente donné dans Bash?

  3. bash :tue silencieusement le processus de la fonction d'arrière-plan

  4. Comment tuer tous les processus avec un nom partiel donné ?

  5. Comment tuer tous les processus d'arrière-plan dans zsh ?

Comment tuer un processus sous Linux ? Commandes pour terminer

Comment tuer un processus sous Linux

Comment utiliser la commande htop pour surveiller les processus système en temps réel

Comment tuer les processus Zombie sous Linux

Comment envoyer des processus en arrière-plan sous Linux

Comment tuer les processus zombies dans Ubuntu