2013-04-10 22 views
0

我使用nohup命令在遠程機器上運行我的matlab程序。由於我必須通過改變一些輸入參數來運行相同的程序,我決定嘗試利用並行計算工具箱的功能。我有以下matlab腳本,說datafile.m:使用nohup時,MATLAB中的createTasks和createJob命令不起作用?

 % This is a matlab script titled datefile.m 
     a_array = [0;1;2;3]; 
     jm = findResource('scheduler', 'Configuration', 'local'); 
     job_ss = createJob(jm, 'Name', 'unsteady_slab_porous'); 

     paths = {blah blah} 

     set(job_ss, 'PathDependencies', paths); 

     for i=1:length(a_array) 
     createTask(job_ss, @my_function, 0, {a_array(i)}); 
     end  

     submit(job_ss) 

當我在matlab終端上運行datafile.m它運行良好。但是,如果我嘗試使用nohup命令執行腳本,則作業將失敗。 這是我做的:

nohup matlab -nodesktop <nohup_script.m &> nohup_script.log & 

其中nohup_script.m只是調用datafile.m

我想知道如果它是不可能在所有的CreateTask和createJob命令使用nohup的,抑或是我需要調整我的datafile.m才能使它工作。

回答

1

您需要修改您的nohup_script.m以阻止,直到job_ss完成。換句話說,只需添加

wait(job_ss) 

到最後。否則,當調用MATLAB客戶端退出時,本地調度程序終止所有正在運行的作業 - 按照本頁最後一句話http://www.mathworks.co.uk/help/distcomp/use-a-local-scheduler.html

+0

按照我的意願工作。謝謝。我經過一番搜索後發現的另一個選擇是使用程序「屏幕」作爲「nohup」的替代方案。我還沒有測試過它。 – me10240 2013-04-11 20:06:39