我试图做以下事情。 现在,我通过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运行,怎么可能?
答案 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)
感谢大家的帮助。 我想我发现我一直在寻找。
ssh
进入我的机器screen -dmS analysis
nohup ./script.sh &
exit
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
分析一个接一个地进行!太好了!