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

时间:2013-08-29 11:55:26

标签: bash matlab terminal nohup

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

nohup matlab -nodesktop -nodisplay < mycode.m > output.txt 2>&1 &

现在我想编写一个脚本,在后台运行几个nohup命令,一个接一个。 我设法做了

#!/bin/bash
matlab -nodesktop -nodisplay -r "mycode;quit;" > output.txt

但不仅代码仅适用于一个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

现在有可能做一个脚本吗?因为我注意到,只要我输入screen,我就必须立即按Enter键。

EDIT2:@Peter 我做了你的建议

#!/bin/bash
cd folder1/
matlab -nodesktop -nodisplay -r "mycode;quit;" < /dev/null  > output.txt
cd folder2/
matlab -nodesktop -nodisplay -r "mycode;quit;" < /dev/null  > output.txt

但只有第一个matlab运行,怎么可能?

2 个答案:

答案 0 :(得分:4)

汇总您可以尝试的所有建议和想法:

#!/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
"

您还可以尝试expect来控制matlab,而不是发送mycode.m或使用-r

尝试在nohup上执行screen。我认为您不再需要添加&,因为screen默认情况下作为守护程序运行。

答案 1 :(得分:1)

感谢大家的帮助。 我想我发现我一直在寻找。

  1. ssh进入我的机器
  2. 使用命令screen -dmS analysis
  3. 创建一个新屏幕
  4. 运行脚本(见下文)nohup ./script.sh &
  5. 关闭屏幕exit
  6. 使用top检查正常运行(照例:))
  7. 这是我的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
    

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