Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 在后台运行matlab_Shell_Command Line_Matlab_Redirect_Background - Fatal编程技术网

Shell 在后台运行matlab

Shell 在后台运行matlab,shell,command-line,matlab,redirect,background,Shell,Command Line,Matlab,Redirect,Background,我正在48台虚拟机上运行matlab,并希望将其自动化。我用ssh连接到机器中,然后使用matlab-r matlab_命令>outfile.txt&让进程在后台运行,并在注销时正常运行。唯一的问题是,当我作业时,我的进程会停止,直到我fg^zbg才开始。是否有matlab标志,以便我可以在后台运行它而不必停止 谢谢, 迈克 为了澄清,这是不起作用的命令的顺序 ssh服务器 matlab-r matlab_命令>outfile.txt& 作业 [1] 停止 为了解决这个问题,我 fg ^z bg

我正在48台虚拟机上运行matlab,并希望将其自动化。我用ssh连接到机器中,然后使用
matlab-r matlab_命令>outfile.txt&
让进程在后台运行,并在注销时正常运行。唯一的问题是,当我
作业
时,我的进程会停止,直到我
fg
^z
bg
才开始。是否有matlab标志,以便我可以在后台运行它而不必停止

谢谢, 迈克

为了澄清,这是不起作用的命令的顺序

ssh服务器

matlab-r matlab_命令>outfile.txt&

作业

[1] 停止

为了解决这个问题,我

fg

^z

bg

注销

现在它可以工作了

在UNIX上使用命令来防止在您注销时MATLAB停止

nohup matlab -nodisplay -nosplash -r matlab_command > outfile.txt &
别忘了包括
exit在matlab_命令脚本的末尾

更新:

尝试以下解决方案:


有一个解释。

解决问题的真正干净的方法是使用。 然后,您将不会失去Matlab会话,您可以随时返回Matlab提示符。如果有人用你的Matlab代码出错了,你需要调试一下,这将非常有用


只需启动“
屏幕”
”(安装软件包后,包括在所有主要发行版中)。您将有一个典型的提示,但在一个持久的虚拟终端中。像往常一样启动matlab,忽略任何背景。然后按CTRL+A、D(先按CTRL+A,然后按D)。你将离开屏幕。你可以注销。如果要返回屏幕会话,请运行
screen-r
。如果需要,您也可以首先直接启动
屏幕matlab[…]
。当matlab退出时,您的虚拟会话也会被删除。

我正在使用此解决方案,它在以下方面提供了一个虚拟标准:

matlab -r matlab_command > outfile.txt < /dev/null &
matlab-r matlab_命令>outfile.txt
如果您正在使用文件:

nohup matlab-nodesktop-nodisplayresult.txt&


您可能需要在执行此操作后按enter键。

我在屏幕上遇到问题:matlab启动了,但不知道通过stdin传递了什么。它只是忽略了它

但是我成功了。这是我使用的命令行

local$ ssh -f me@remote 'tmux new-session -d -s matlab "matlab -nojvm -nodesktop -nodisplay -nosplash </path/to/myscript.m"'
注意,我不得不在这里使用
-t
来代替
-f
我找到了一些有用的链接


nohup nice matlab-nodisplay-nosplash outfile.txt>2>dev/null&

也许这可以解决您的问题。

如果您想要显示,NoMachine()非常好,因为它允许您重新登录到服务器。当我注销时,Matlab不会停止,但是它从来不会真正启动,直到它在前台运行至少一次。如果你这样做会发生什么:
matlab-r matlab\u command>outfile.txt
?谢谢你,这正是我想要的。我总是忘了
屏幕
有多有用+1我不想做任何输入,如您所说的ctrl a d。我试图制作一个脚本,在144个不同VM上的144个matlabs上运行matlab。我不想手动启动每一个。然后屏幕仍然适合您,因为您可以像nohup案例一样启动它。您还可以使用生成144个本地会话的屏幕[一个屏幕会话可以容纳多个虚拟终端会话]。在每个会话中,您将自动连接到一个VM并运行matlab。这样,您就不必注销,只需通过一屏会话即可轻松监控所有会话。并不是说您需要这样做,这只是您用例的另一个选项。能够监测对我来说至关重要的声音——有这么多的会话,会有一些失败。nohup nice matlab-nodisplay-nosplashoutfile.txt 2>&1&
local$ ssh -t me@remote 'tmux a -t matlab'
nohup nice matlab -nodisplay -nosplash <matlab_command.m > outfile.txt > 2>dev/null &