GNU/Linux >> Tutoriels Linux >  >> Linux

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

# Spawn a child process:
(dosmth) & pid=$!
# in the background, sleep for 10 secs then kill that process
(sleep 10 && kill -9 $pid) &

ou pour obtenir également les codes de sortie :

# Spawn a child process:
(dosmth) & pid=$!
# in the background, sleep for 10 secs then kill that process
(sleep 10 && kill -9 $pid) & waiter=$!
# wait on our worker process and return the exitcode
exitcode=$(wait $pid && echo $?)
# kill the waiter subshell, if it still runs
kill -9 $waiter 2>/dev/null
# 0 if we killed the waiter, cause that means the process finished before the waiter
finished_gracefully=$?

(Comme on le voit dans l'entrée 68 de la FAQ BASH :"Comment puis-je exécuter une commande et la faire abandonner (timeout) après N secondes ?")

Si cela ne vous dérange pas de télécharger quelque chose, utilisez timeout (sudo apt-get install timeout ) et utilisez-le comme :(la plupart des systèmes l'ont déjà installé, sinon utilisez sudo apt-get install coreutils )

timeout 10 ping www.goooooogle.com

Si vous ne voulez pas télécharger quelque chose, faites ce que le délai d'attente fait en interne :

( cmdpid=$BASHPID; (sleep 10; kill $cmdpid) & exec ping www.goooooogle.com )

Au cas où vous voudriez faire un délai d'attente pour un code bash plus long, utilisez la deuxième option en tant que telle :

( cmdpid=$BASHPID; 
    (sleep 10; kill $cmdpid) \
   & while ! ping -w 1 www.goooooogle.com 
     do 
         echo crap; 
     done )

Linux
  1. Comment tuer un processus sous Linux en utilisant la commande ?

  2. Comment faire mourir le processus enfant après la sortie du parent?

  3. Pourquoi le processus enfant est-il toujours en vie après la suppression du processus parent sous Linux?

  4. Comment mettre en pause/reprendre un processus sous Linux

  5. Comment expirer un groupe de commandes dans Bash

Comment tuer un processus sous Linux ? Commandes pour terminer

Comment tuer un processus sous Linux

Comment tuer les processus Zombie sous Linux

Comment tuer le processus Linux en cours d'exécution sur un port particulier

Comment tuer un processus sous Linux

Comment tuer les processus zombies dans Ubuntu