2010-10-24 11 views
0

Cette commande existe-t-elle sous Linux?existe-t-il une commande runonce pour limiter l'exécution des commandes?

runonce --dampen 300 echo "hello" 

La commande prend une commande pour s'exécuter et les critères optionnels limitent fréquemment son exécution.

L'option dampen indique attendre 300 millisecondes, puis exécutez la commande. Toutes les autres exécutions de cette commande sont fusionnées en une seule exécution. Cela vous permet de réduire les événements de manière générique et de combiner leur exécution.

si vous exécutiez

runonce --dampen 300 echo "hello" 
runonce --dampen 300 echo "hello" 
runonce --dampen 300 echo "hello" 

De trois sous-coquilles à peu près en même temps, le premier vivrait pour 300 millisecondes et impression bonjour. Les deux autres reviendraient immédiatement et ne feraient rien.

Si tel est le cas, quel est le nom de l'outil ou un lien vers sa page de projet?

Répondre

1

Une solution possible, en quelque sorte tiré de flock page man, serait:

#!/bin/sh 
# name me 'runonce' 

timeout="$1"; shift 
command="$1"; shift 
hash=$(echo "$command" "[email protected]" | md5sum) 
(
    flock -xw0 3 || exit 
    sleep "$timeout" 
    "$command" "[email protected]" 
) 3>"/tmp/$hash" 

Exemple d'utilisation:

runonce 10 echo "hello" 

où 10 est un nombre de secondes (pas millisecondes).

EDIT: introduit hachant sur commad + paramètres

+0

Ceci est une solution cool. Je ne l'ai pas dit, mais runonce --dampen echo "au revoir" ne devrait pas être bloqué, puisqu'il s'agit d'une seconde commande différente. En utilisant votre solution de script flock, je suppose que vous pourriez faire un fichier de verrouillage qui est le hachage de votre commande, de sorte que l'amortissement varie sur les commandes. – Ozten

+0

J'ai pris en compte votre suggestion, et modifié en conséquence. – enzotib

0

Je pense que vous pouvez regarder cron, pour voir si cela répond à vos besoins

+0

'at' pourrait être plus proche, mais je ne crois pas qu'il prend en charge la logique de rejoindre que les demandes des OP. – dmckee