2013-08-29 81 views
4

我正在嘗試執行下面的操作。 現在,我通過SSH連接到遠程計算機,並用nohup命令作爲在nohup bash腳本中運行幾個matlab實例

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 [email protected] 
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運行,怎麼可能?

+1

如何使用['screen'](http://www.computerhope.com/unix/screen.htm)? –

+0

@RodyOldenhuis對不起,你可以更具體我從來沒有使用屏幕命令:( – Nicholas

+1

這就是爲什麼我提供了一個鏈接到文檔:)在那裏你可以閱讀:「屏幕將允許你有多個屏幕做不同的任務,多次連接(SSH)到同一臺計算機。「 「即使在註銷時也可以保持屏幕的活動狀態,並且可以在下次連接時重新連接。」因此,它允許您通過相同的SSH連接打開多個終端會話,並且在斷開SSH連接時,您在每個終端上運行的任務都不會終止。我想這就是你想要做的事,對嗎? –

回答

4

編譯所有的建議和想法,你可以嘗試這些:

#!/bin/bash 
ssh [email protected] " 
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 [email protected] " 
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 [email protected] " 
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 [email protected] " 
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它。

也試着在screen上做nohup。我認爲你不再需要添加&,因爲默認情況下screen作爲守護程序運行。

+1

感謝您的留言,儘管我認爲我找到了一個很好的解決方案,我將發佈。 – Nicholas

1

感謝你們所有人的幫助。 我想我發現我一直在尋找。

  1. ssh到我的機器
  2. 創建命令screen -dmS analysis
  3. 運行腳本,新的屏幕(見下文)nohup ./script.sh &
  4. 關閉屏幕exit
  5. 檢查與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 

分析運行一個接一個!大!

+0

我認爲S分析是可選的。你可以只使用'screen -dm' – konsolebox

+0

另外,運行不帶參數或命令的'screen -dm'不會創建一個交互式屏幕進程。它只是一個背景上的唯一屏幕。剛剛工作的那個人是'nohup ./script.sh&'。即使你不運行screen -dmS分析,我認爲它仍然可以工作。 – konsolebox