【发布时间】:2021-08-04 08:47:47
【问题描述】:
我正在寻找类似ssh user@node1 uptime && ssh user@node2 uptime 的替代方案,其中两个 SSH 命令同时运行。由于它们在命令返回之前都处于阻塞状态,因此它们之间的&& 和; 不起作用。
我的目标是通过 SSH 在两个节点上运行无限 while 循环。所以第一个永远不会返回,第二个永远不会运行。然后,我想在使用 Ctrl+C 终止循环后将输出保存到日志文件中,并通过 Python 读取该输出。
有没有简单的解决方案?
提前致谢!
【问题讨论】:
-
使用
&在后台运行第一个命令。不过,你不能用Ctrl+C来阻止它。 -
@StefanWobbe:这里没有发生正确意义上的阻塞。它们只是按顺序运行(并且,如果您使用
&&,则仅当第一个命令成功时才会运行第二个命令)。 “相互阻塞”意味着程序以某种方式进行通信,可能是通过一个公共信号量。当然ssh user@node1 uptime & ssh user@node2 uptime会以并行方式运行它们,但我看不出从中获得多少收益,因为无论如何 uptime 应该会很快返回。 -
使用
&而不是&&。