在后台运行matlab

时间:2010-06-08 19:48:50

标签: shell command-line matlab redirect background

我正在48个虚拟机上运行matlab,并希望自动化它。我进入机器,然后使用matlab -r matlab_command > outfile.txt &让进程在后台运行,并在我注销时运行正常。唯一的问题是当我jobs我的流程停止并且在fg ^ z bg之前无法启动。是否有一个matlab标志,以便我可以在后台运行它而不停止它?

谢谢, 麦克

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

ssh server

matlab -r matlab_command > outfile.txt &

jobs

[1]停止了

解决这个问题

fg

^ Z

bg

logout

现在可行了

6 个答案:

答案 0 :(得分:18)

在UNIX上使用nohup命令以防止MATLAB在您注销时停止。

nohup matlab -nodisplay -nosplash -r matlab_command > outfile.txt &

不要忘记在matlab_command脚本的末尾包含exit;

<强>更新

尝试此解决方案:Is it possible to run MATLAB in the background under UNIX?

有一个解释here

答案 1 :(得分:9)

问题的真正干净解决方案是使用GNU Screen。 然后你不会松开你的Matlab会话,你总是可以回到Matlab提示。如果你的Matlab代码出错了,你需要调试一下,这非常有用。

启动“screen”(安装软件包后,包含在所有主要发行版中)。您将有一个典型的提示,但在一个持久的虚拟终端内。像往常一样启动你的matlab,省略任何背景。然后按CTRL + A,D(第一个CTRL + A,然后是d)。你将不在屏幕上。你可以退出。如果您想返回屏幕会话,请运行screen -r。如果需要,您也可以直接启动screen matlab [...]。当matlab退出时,它会导致你的虚拟会话被删除。

答案 2 :(得分:2)

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

matlab -r matlab_command > outfile.txt < /dev/null &

答案 3 :(得分:2)

我在屏幕上遇到了麻烦:matlab开始了但没有通过stdin传递的概念。它完全忽略了它。

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

local$ ssh -f me@remote 'tmux new-session -d -s matlab "matlab -nojvm -nodesktop -nodisplay -nosplash </path/to/myscript.m"'

然后您可以ssh到远程主机(由前缀remote$指示)并通过发出remote$ tmux a -t matlab来检查事物。按Ctrl-b d可以分离到远程主机。您列出了remote$ tmux ls的会话(如屏幕)。您可以使用Ctrl-b &从内部使用$remote tmux kill-session -t matlab从内部终止会话。

但我发现您也可以直接从本地主机连接到您的tmux会话:

local$ ssh -t me@remote 'tmux a -t matlab'

请注意,我必须使用 -t 代替-f

答案 4 :(得分:0)

如果您使用的是文件:

nohup matlab -nodesktop -nodisplay < file.m > result.txt &

执行此操作后,您可能需要按Enter键。

答案 5 :(得分:0)

我找到了一些有用的链接Tips for Running Large Computationsnohup

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

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