我已经设置了 4 个 CRON 作业来自动重新索引我的 Sphinx 索引,如下所示:
*/5 * * * /usr/bin/pgrep indexer || time /usr/local/sphinx/bin/indexer --rotate --config /usr/local/sphinx/etc/sphinx.conf ripples_delta
*/5 * * * /usr/bin/pgrep indexer || time /usr/local/sphinx/bin/indexer --rotate --config /usr/local/sphinx/etc/sphinx.conf users_delta
30 23 * * * /usr/bin/pgrep indexer || time /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf --merge users users_delta --merge-dst-range deleted 0 0 --rotate
0 0 * * * /usr/bin/pgrep indexer || time /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf --merge ripples ripples_delta --merge-dst-range deleted 0 0 --rotate
上面显示了 pgrep,我希望在每个实例中都使用它来检查索引器是否已经在运行。我的目的是防止任何潜在的资源匮乏重叠。
前两个 Cron 作业每 5 分钟运行一次,并为我的两个主要索引更新 Delta 索引。
后两个每天运行一次(一个在晚上 11:30,另一个在上午 12 点),并将 delta 索引合并到它们的主要对应物中。
我的理解是,在这些索引合并之后,我需要在 delta 上重新运行索引,以便删除所有先前合并的数据,并基本上清理它们以准备第二天的索引。
如何确保合并完成后自动发生这种情况?显然,我可以再添加两个 cron 作业,但我需要在相关合并完成后立即执行它们。
提前致谢。