我有下面這個腳本將被守護進程並觸發可能數百,如果不是不同的用戶數千次。bash腳本優化
該腳本使用inotifywait
觀看上傳文件夾,然後將上傳的文件移動到其最終目的地以進行演示,在旋轉(備份/移動)之前的上傳之後。該代碼將針對不同的上傳文件夾運行。
#!/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
我能做些什麼來優化它?還是應該重寫一個更快的編程語言?另外,如何在一定的負載下測試腳本?
如果速度夠快,則不需要重寫。你可以通過向其中扔文件來測試它。一個明顯的優化是跟蹤每個目錄中的計數(WTF是「文件夾」?),而不是每次計算它。 –
相關,但擴展名爲[什麼是正確的方式來循環此?](http://stackoverflow.com/questions/13097606/whats-the-correct-way-to-loop-this/) –