shell 實現快速更新sphinx索引庫檔案

2021-05-28 05:19:51 字數 1811 閱讀 5477

隨著基礎詞典和資料庫內容的容量的增長,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...