隨著基礎詞典和資料庫內容的容量的增長,sphinx索引檔案的生成時間也隨之增長著。要實現在最短的時間內對sphinx索引檔案的更新工作,看來只有在後台另外生成乙份新的索引檔案,完成之後再停止sphinx服務進行替換了。替換,就是將原來的索引檔案重新命名為別的檔案,再將新生成的索引檔案重新命名為索引檔案。原理就是:重新命名的時間比刪除大檔案的時間短。所以可以實現對大檔案進行「瞬間」更新。在最短的時間內重新更新和啟動sphinx上線工作。
以下是我寫的管理 sphinx 服務的指令碼:
#!/bin/sh
## power by [email protected]
# blog:
. /etc/rc.d/init.d/functions
coreseek_dir="/usr/local/coreseek/"
data_dir="$/var/data/"
config="$etc/sphinx.conf"
buffer="$etc/buffer.conf"
stop() --stop > /dev/null 2>&1
ret=$?
[ $ret -eq 0 ] && success||failure
echo
return $ret
}start() > /dev/null 2>&1
ret=$?
[ $ret -eq 0 ] && success||failure
echo
return $ret
}indexer() --all > /dev/null 2>&1
ret=$?
[ $ret -eq 0 ] && success||failure
echo
return $ret
}update() --all > /dev/null 2>&1
ret=$?
[ $ret -eq 0 ] && success||failure
echo
return $ret
}move()' > /dev/null 2>&1
ret=$?
[ $ret -eq 0 ] && success||failure
rm -f $*.bak
echo
return $ret
}case $1 in
indexer)
stop
indexer
start
;; stop)
stop
;; start)
start
;; update)
update
stop
move
start
esac
exit 0
配置檔案 sphinx.conf 片段
source main
source product_src : main
index product
配置檔案 buffer.conf 片段
source main
source product_src : main
index product
指令碼的使用說明:
sphinx start 啟動sphinx服務
sphinx stop 停止sphinx服務
sphinx indexer 停止服務並重新生成索引庫
sphinx update 快速更新索引庫
OTA之流式更新及shell實現
但這種方式的問題是,本地需要有足夠的空間存放ota包,這對一些flash較小的產品來說,會起到很大的限制作用,需要在flash上留出乙個不小於系統占用大小的空間,用於存放ota包。安卓在ab公升級方案中,就支援了這種流式更新 streaming updates 的方式,無需臨時空間存放ota包。那麼...
shell記錄 持續更新
變數 和 url echo 輸出變數內容 輸出 echo 輸出變數長度 輸出 30 echo 左起第乙個 非貪婪匹配 為分隔,刪除左邊包括本身 輸出 www.baidu.com txt 1.txt echo 左起最後乙個 貪婪匹配 為分隔,刪除左邊包括本身 輸出 1.txt echo 右起第乙個 非...
shell 例項收集 更新ing
1.查詢當前目錄中所有大於500m的檔案,把這些檔名寫到乙個文字檔案中,並統計其個數。find size 500m type f tee file list wc l 2.在目錄 tmp下找到100個以abc開頭的檔案,然後把這些檔案的第一行儲存到檔案new中。for filename in fin...