gpt4 book ai didi

linux - 通过 Matlab system() 连续运行多个远程命令

转载 作者:太空狗 更新时间:2023-10-29 12:03:46 36 4
gpt4 key购买 nike

我想使用 matlab 系统调用连续执行多个命令。我首先想通过 ssh 连接到一台远程机器,然后在该机器上运行一个程序。程序启动后,我想在该程序的控制台中输入另一个命令。这是我想在代码中做的事情:

system('ssh othermachine')
system('command on other machine')
%%WAIT FOR PROGRAM TO START RUNNING ON OTHER MACHINE
system('run command on other machine')

问题是 Matlab 将挂起在第一个系统调用上,直到第一个进程退出后才会继续进行下一个系统调用。有没有解决的办法?感谢您的帮助!

最佳答案

序言:您的问题很普遍,而不仅仅是与 matlab 相关。

当你想通过 ssh 运行远程命令时,它们必须在 ssh 调用中发出。在 (linux) shell 中,您将拥有

$ ssh remotemachine command1

对于单个命令。因此,使用 matlab system 调用您将拥有

>> system('ssh remotemachine command1').

当你希望多个命令按顺序执行时,你可以在 shell 中编写

$ ssh remotemachine "command1; command2"

也就是说,在 matlab 中,你会写类似的东西

>> system('ssh remotemachine "command1; command2"').

一般来说,将您的命令分组在一个 shell 脚本中会更优雅,比如 script.sh,然后将其通过管道传递到 ssh 调用中

$ cat script.sh | ssh remotemachine

这在 matlab shell 中听起来像

>> system('cat script.sh | ssh remotemachine').

您可以添加许多标志以指定您想要的行为(例如,在 session 分离/后台执行、输出收集方面,... look e.g. here)。

关于linux - 通过 Matlab system() 连续运行多个远程命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23390113/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com