在nohup bash脚本中运行几个matlab实例

在nohup bash脚本中运行几个matlab实例,bash,matlab,terminal,nohup,Bash,Matlab,Terminal,Nohup,我试着做如下的事情。 现在,我通过ssh连接到远程机器,并使用nohup命令运行我的分析,如下所示 nohup matlab -nodesktop -nodisplay < mycode.m > output.txt 2>&1 & 但是,不仅代码只在一个CPU上工作,而且它在一个无限循环中运行,永远不会完成任务 我能解决这个问题吗? 在启动script.sh后关闭终端非常重要 编辑: 多亏了你,我终于做到了,并且让下面的事情顺利进行 ssh user@ipad

我试着做如下的事情。 现在,我通过ssh连接到远程机器,并使用nohup命令运行我的分析,如下所示

nohup matlab -nodesktop -nodisplay < mycode.m > output.txt 2>&1 &
但是,不仅代码只在一个CPU上工作,而且它在一个无限循环中运行,永远不会完成任务

我能解决这个问题吗? 在启动script.sh后关闭终端非常重要

编辑: 多亏了你,我终于做到了,并且让下面的事情顺利进行

ssh user@ipaddress
screen
cd folder1/
nohup matlab -nodesktop -nodisplay < mycode.m > output.txt 2>&1 &
exit
screen
cd folder2/
nohup matlab -nodesktop -nodisplay < mycode.m > output.txt 2>&1 &
exit

但是只有第一次运行matlab,怎么可能呢?

编译所有建议和想法,您可以尝试以下方法:

#!/bin/bash
ssh user@ipaddress "
cd folder1/
nohup matlab -nodesktop -nodisplay < mycode.m > output.txt 2>&1 &
cd folder2/
nohup matlab -nodesktop -nodisplay < mycode.m > output.txt 2>&1 &
"
#/bin/bash
sshuser@ipaddress "
cd文件夹1/
nohup matlab-nodesktop-nodisplayoutput.txt 2>&1&
cd文件夹2/
nohup matlab-nodesktop-nodisplayoutput.txt 2>&1&
"

#/bin/bash
sshuser@ipaddress "
cd文件夹1/
nohup matlab-nodesktop-nodisplay-r'mycode;quit;'output.txt 2>&1&
cd文件夹2/
nohup matlab-nodesktop-nodisplay-r'mycode;quit;'output.txt 2>&1&
"

#/bin/bash
sshuser@ipaddress "
cd文件夹1/
screen-dm matlab-nodesktop-nodisplayoutput.txt 2>&1
cd文件夹2/
screen-dm matlab-nodesktop-nodisplayoutput.txt 2>&1
"

#/bin/bash
sshuser@ipaddress "
cd文件夹1/
screen-dm matlab-nodesktop-nodisplay-r'mycode;quit;'output.txt 2>&1
cd文件夹2/
screen-dm matlab-nodesktop-nodisplay-r'mycode;quit;'output.txt 2>&1
"
您也可以尝试
expect
来控制matlab,而不是向其发送
mycode.m
或使用
-r


也可以尝试在
屏幕上执行
nohup
。我认为您不再需要向它添加
&
,因为
屏幕
在默认情况下已经作为守护进程运行。

谢谢大家的帮助。 我想我已经找到了我想要的

  • ssh
    进入我的机器
  • 使用命令
    screen-dmS analysis
  • 运行脚本(见下文)
    nohup./script.sh&
  • 关闭屏幕
    退出
  • 使用
    top
    (与往常一样:)检查运行情况
  • 这是我的
    script.sh

    #!/bin/bash
    matlab -nodesktop -nodisplay -r "cd folder1/; run('mycode.m'); quit"  < /dev/null  > output.txt
    matlab -nodesktop -nodisplay -r "cd folder2/; run('mycode.m'); quit"  < /dev/null  > output.txt
    
    #/bin/bash
    matlab-nodesktop-nodisplay-r“cd folder1/;运行('mycode.m');退出”output.txt
    matlab-nodesktop-nodisplay-r“cd folder2/;运行('mycode.m');退出”output.txt
    

    分析一个接一个地进行!太好了

    如何使用?@RodyOldenhuis抱歉,你能说得更具体一点吗?我从未使用过screen命令:(这就是我提供文档链接的原因:)在这里,你可以看到“screen允许你有多个屏幕执行不同的任务,而不必多次连接(SSH)到同一台计算机。”以及“[…]分离[…]将保持屏幕处于活动状态,即使在注销时,并且可以在下次连接时重新连接。“。因此,它允许您在同一SSH连接上打开多个终端会话,并且在每个终端会话中运行的任务不会在您断开SSH连接时终止。我想这就是你想要做的,对吗?@Nicholas我实际上没有看到你的第二个剧本中有一部分可以让它无限延伸,还有nohup。你还做了其他的东西吗?@konsolebox不,我没有,代码也不会停止(?)谢谢你的帖子,尽管我觉得我找到了一个很好的解决方案,我要发布。我认为S分析是可选的。您可以只使用
    screen-dm
    ,运行
    screen-dm
    而不使用参数或命令也不会创建交互式屏幕进程。它只是背景上的一个单独的屏幕。刚刚起作用的是
    nohup./script.sh&
    。我认为即使您不运行
    screen-dmS分析
    ,它仍然可以工作。
    #!/bin/bash
    ssh user@ipaddress "
    cd folder1/
    nohup matlab -nodesktop -nodisplay < mycode.m > output.txt 2>&1 &
    cd folder2/
    nohup matlab -nodesktop -nodisplay < mycode.m > output.txt 2>&1 &
    "
    
    #!/bin/bash
    ssh user@ipaddress "
    cd folder1/
    nohup matlab -nodesktop -nodisplay -r 'mycode;quit;' < /dev/null  > output.txt 2>&1 &
    cd folder2/
    nohup matlab -nodesktop -nodisplay -r 'mycode;quit;' < /dev/null  > output.txt 2>&1 &
    "
    
    #!/bin/bash
    ssh user@ipaddress "
    cd folder1/
    screen -dm matlab -nodesktop -nodisplay < mycode.m > output.txt 2>&1
    cd folder2/
    screen -dm matlab -nodesktop -nodisplay < mycode.m > output.txt 2>&1
    "
    
    #!/bin/bash
    ssh user@ipaddress "
    cd folder1/
    screen -dm matlab -nodesktop -nodisplay -r 'mycode;quit;' < /dev/null  > output.txt 2>&1
    cd folder2/
    screen -dm matlab -nodesktop -nodisplay -r 'mycode;quit;' < /dev/null  > output.txt 2>&1
    "
    
    #!/bin/bash
    matlab -nodesktop -nodisplay -r "cd folder1/; run('mycode.m'); quit"  < /dev/null  > output.txt
    matlab -nodesktop -nodisplay -r "cd folder2/; run('mycode.m'); quit"  < /dev/null  > output.txt