J'ai ce script ci-dessous qui sera démonisé et déclenché peut-être des centaines sinon des milliers de fois par différents utilisateurs.Optimisation du script bash
Le script utilise inotifywait
pour regarder un dossier pour un téléchargement, puis déplace le fichier téléchargé vers sa destination finale pour la présentation, après la rotation (sauvegarde/déplacement) des téléchargements précédents. Le code sera exécuté sur différents dossiers de téléchargement créés à la volée.
#!/bin/bash
db="$VAR1"/path/to/upload/folder/
s3="$VAR2"/path/to/remote/folder
inotifywait -m -r -e attrib "$db" |
while read dir ev file;
do
for dirnum in $(cd "$s3"; ls */*.png | sed 's%/.*%%' | sort -nr)
do
next=$(($dirnum + 1));
mv "$s3/$dirnum/post$dirnum.png" "$s3/$next/post$next.png";
done
mv "$db"/"$file" "$s3"/1/post1.png
done
Que puis-je faire pour l'optimiser? Ou devrait-il être réécrit un langage de programmation plus rapide? Aussi, comment puis-je tester des scripts sous une certaine quantité de charge?
Si elle est assez rapide, elle n'a pas besoin d'être réécrite. Vous pouvez le tester en y jetant des fichiers. Une optimisation évidente est de garder une trace du nombre dans chaque répertoire (WTF est un "dossier"?) Au lieu de le calculer à chaque fois. –
Relatif à, mais une extension de, [Quelle est la bonne façon de boucle ce?] (Http://stackoverflow.com/questions/13097606/whats-the-correct-way-to-loop-this/) –