我正在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
现在可行了
答案 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 Computations和nohup
nohup nice matlab -nodisplay -nosplash <matlab_command.m > outfile.txt > 2>dev/null &
也许这可以解决你的问题。