Je veux limiter la sortie de grep
fonctionner au maximum toutes les X secondes. Plus précisément, je veux faire quelque chose comme ceci:
ping 8.8.8.8 | grep "No route to host" | throttle 3s | xargs -I % sh -c 'reset wifi'
Je veux limiter la sortie de grep
fonctionner au maximum toutes les X secondes. Plus précisément, je veux faire quelque chose comme ceci:
ping 8.8.8.8 | grep "No route to host" | throttle 3s | xargs -I % sh -c 'reset wifi'
Réponses:
Répondant à ma propre question, basée sur cette question , mais légèrement modifiée pour OSX:
epoch () { date -v+$* "+%s" }
interval () {
INTERVAL="$*"
WHEN_TO_RUN=0
while read LINE; do
if (( $(epoch 0S) >= $WHEN_TO_RUN )) then
echo $LINE
WHEN_TO_RUN="$(epoch $INTERVAL)"
fi
done
}
ce qui permet ... | interval 3S
date +%s.%N
- n'est tout simplement pas supporté par macOS (pour autant que je sache, de toute façon). Si j'avais besoin d'un peu plus de précision sur les intervalles de macOS, je pourrais écrire un peu de C qui l'utilisait gettimeofday(2)
.