Comment lancer un processus avec timeout en Bash? [dupliquer]

Double Possible:

script Bash qui tue un enfant après un délai d'attente

Est-il un moyen d'écrire un script shell qui exécute une certaine commande pendant 15 secondes, puis tuer la commande?

j'ai essayé le sommeil, l'attente et le ping mais peut-être que je les utilise mal.

100
demandé sur codeforester 2012-04-19 13:09:33

2 réponses

utilisez la commande timeout :

timeout 15s command

Note: sur certains systèmes vous devez installer coreutils , sur d'autres il est manquant ou a des arguments de ligne de commande différents. Voir une solution alternative Postée par @ArjunShankar . Basé sur elle, vous pouvez encapsuler ce code de chaudière-plaque et de créer votre propre portable timeout script ou petite application C qui fait la même chose.

201
répondu Karoly Horvath 2014-12-11 13:01:28

certaines machines n'ont pas timeout installé/disponible. Dans ce cas, vous pouvez background le processus; son PID est alors stocké comme $! ; puis dormir pour la quantité de temps nécessaire, puis le tuer:

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

À cette URL je trouve qu'il n'y sont mentionnés, en plus de l'une des solutions pour ce faire.

46
répondu ArjunShankar 2018-08-22 10:16:37