119 votes

Comment exécuter un processus avec un délai d'attente dans Bash ?

Dupliquer possible :
script Bash qui tue un processus enfant après un délai donné

Existe-t-il un moyen d'écrire un script shell qui exécuterait une certaine commande pendant 15 secondes, puis tuerait la commande ?

J'ai essayé de dormir, d'attendre et de ping mais peut-être que je les utilise mal.

237voto

Karoly Horvath Points 45145

Utilisez la commande timeout :

timeout 15s command

Remarque : sur certains systèmes, vous devez installer coreutils, sur d'autres, il manque ou a des arguments de ligne de commande différents. Voir une autre solution postée par @ArjunShankar . Sur cette base, vous pouvez encapsuler ce code de plaque de chaudière et créer votre propre script portable timeout ou petite application C qui fait la même chose.

65voto

ArjunShankar Points 8476

Certaines machines n'ont pas timeout installés/disponibles. Dans ce cas, vous pouvez faire l'arrière-plan du processus ; son PID est alors stocké en tant que $! ; puis dormez pendant le temps requis, puis tuez-le :

some_command arg1 arg2 &
TASK_PID=$!
sleep 15
kill $TASK_PID

À cette URL, je trouve qu'il y a mentionné, plus d'une solution pour que cela se produise.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X