14 votes

Commande d'exécution de Bash pendant un certain temps ?

Je suis en train de créer un script bash script pour mon propre usage. Comment puis-je exécuter une commande pendant un certain temps (par exemple 20 secondes) et ensuite la terminer ? J'ai essayé beaucoup de solutions mais rien ne fonctionne. J'ai aussi essayé la commande timeout sans succès. Merci de me donner une solution à ce problème.

Par exemple : Je veux exécuter cette commande dans un script et la terminer après 10 secondes.

some command

15voto

mpy Points 24817

Hm, cela devrait suffire :

xmessage "Hello World" &
pidsave=$!
sleep 10; kill $pidsave

xmessage fournit un cas de test rapide ici (dans votre cas, la commande airodump devrait aller à cet endroit) ; & le met en arrière-plan.

$! contient le PID du dernier processus démarré (voir par exemple https://stackoverflow.com/a/1822042/2037712 ) ; le PID est enregistré dans la variable pidsave .

Après un certain temps d'attente ( sleep ), envoyer un TERM au processus.

4voto

Hennes Points 63532

A partir de l'invite bash, vous pouvez utiliser "

1voto

Paul Points 11

Une autre solution consiste à utiliser pgrep $pattern, ou pkill $pattern ; renvoie tous les PID correspondant au motif donné, en examinant tous les processus en cours d'exécution sur la machine. Ainsi, pour limiter l'étendue des PIDs à ceux qui vous appartiennent, utilisez : pgrep -P $mypid $pattern, ou pkill -P$mypid $pattern

Ainsi, pour lancer un processus en arrière-plan pendant une durée déterminée, votre script ressemblerait à quelque chose comme ceci :

#!/bin/bash 
mypid=$$
run_something &
sleep $time_in_seconds
pkill -P $mypid something

Gardez à l'esprit que cela tuera tous les processus portant le même nom et s'exécutant sous le PID parent actuel. Vous pouvez donc l'utiliser pour lancer plusieurs processus et les tuer tous simultanément après un certain temps.

0voto

Zaman Points 21

Vous pouvez utiliser un réveil en ligne de commande comme ebay-alarme

Installez le réveil script et faites

ebay-alarm 10 sec -c some command &

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X