使用 mlocate 在多个系统上并行搜索

使用 mlocate 在多个系统上并行搜索

我经常需要在不同的系统上搜索文件,而不知道我要查找的文件位于哪个系统上。

是否可以在多个系统上并行使用 mlocate 进行搜索?通过直接在多个mlocate.db文件中搜索还是使用一些 bash magic?

答案1

使用 bash&并行运行多个“ssh”命令,然后wait不带参数等待所有作业完成。例如,假设您有$query和 中的一个空格分隔的主机列表$hosts

for host in $hosts; do
    ssh $host "locate ${query@Q} | sed 's/^/$host:/'" &
done; wait

这还不完整——它不能很好地处理中断,并且可能存在输出线撕裂的情况。它应该作为独立脚本运行,不是作为一个函数(尽管将其包装在(...)可能的工作中)。

对于缺少的旧版 Bash ${var@Q}(我认为是 5.0 中的新功能),请使用$(printf %q "$var")。两者都假设远程系统也具有遵循 sh/bash 引用规则的登录 shell。

相关内容