une commande de ne runonce existent pour limiter l'exécution de commandes
-
25-09-2019 - |
Question
Est-ce que cette commande existent pour Linux?
runonce --dampen 300 echo "hello"
La commande prendrait une commande pour exécuter et critères facultatifs pour limiter de fréquence il est exécuté.
L'option Humidifiez dit attendre 300 millisecondes, puis exécutez la commande. Toutes les autres exécutions de cette commande se fusionnés en un seul passage. Cela vous permet d'effondrer les événements de façon 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 le même temps, le premier vivrait pour 300 millisecondes et imprimer bonjour. Les deux autres reviendraient immédiatement et ne rien faire.
Si cela existe, quel est le nom de l'outil ou un lien vers sa page de projet?
La solution
Une solution possible, en quelque sorte tiré de la page man flock
, serait:
#!/bin/sh
# name me 'runonce'
timeout="$1"; shift
command="$1"; shift
hash=$(echo "$command" "$@" | md5sum)
(
flock -xw0 3 || exit
sleep "$timeout"
"$command" "$@"
) 3>"/tmp/$hash"
Exemple d'utilisation:
runonce 10 echo "hello"
où 10 est un nombre de secondes (non millisecondes).
EDIT : introduit hachant sur les paramètres commad +