bash - 获取ssh remote命令以终止,以便带有并行选项的xargs可以继续

标签 bash ssh xargs

我正在运行类似于以下命令

getHosts | xargs -I{} -P3 -n1 ssh {} 'startServer; sleep 5; grep -m 1 "server up" <(tail -f log)'

问题是,在服务器启动后,ssh有时甚至会挂起一段时间。该命令是否存在任何问题,可能导致它不终止,以便并行执行可以继续?当我在远程 shell 程序中运行命令时,服务器启动检查似乎是可靠的,并且在将“服务器启动”写入日志时会准时关闭。

最佳答案

而不是远程命令

startServer; sleep 5; grep -m 1 "server up" <(tail -f log)

我会用
grep -m 1 "server up" <(tail -F log -n 0) & startServer ; wait

差异:
  • 在尝试重新启动服务器之前,请先添加日志,以免丢失任何消息。我们从日志的结尾开始,因此我们看不到任何先前的“服务器启动”消息。
  • 使用tail-F选项代替-f,这样,如果旋转日志文件,我们将跟踪新文件,而不是继续无用地跟踪旧文件。
  • 关于bash - 获取ssh remote命令以终止,以便带有并行选项的xargs可以继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11270503/

    相关文章:

    c++ - 被管道弄糊涂了。 'cat -A' 似乎过滤掉了部分输出

    linux - 如何使用 awk 比较 CSV 列?

    git - 多个 github 帐户 : what values for Host in . ssh/config?

    shell - 我怎样才能让 xargs 对输入做一些事情,然后再做另一件事?

    linux - Xargs:并行运行 3 个独立的 xargs 命令

    linux - 从标准输出和管道中提取参数

    Linux 桌面应用程序 : How can I check a package icon?

    mysql创建数据库和用户脚本

    git - 将 ssh 代理套接字转发到 docker build

    c - 使用 C 退出到 linux 的 ssh session