【问题标题】:Running matlab in the background在后台运行matlab
【发布时间】:2010-06-08 19:48:49
【问题描述】:

我在 48 台虚拟机上运行 matlab,并希望将其自动化。我 ssh 进入机器,然后使用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

现在可以使用了

【问题讨论】:

  • 如果你这样做会发生什么:matlab -r matlab_command > outfile.txt < /dev/null &?
  • 谢谢,这正是我想要的

标签: shell command-line matlab redirect background


【解决方案1】:

在 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

【讨论】:

  • 如果你想要一个显示器,NoMachine (nomachine.com) 非常好,因为它允许你重新登录到服务器。
  • Matlab 在我注销时并没有停止,但直到它至少在前台运行一次后才真正启动
【解决方案2】:

真正解决您的问题的方法是使用GNU Screen。 这样你就不会失去你的 Matlab 会话,你总是可以回到 Matlab 提示符。如果有人在您的 Matlab 代码中出错并且您需要进行一些调试,这将非常有帮助。

只需启动 'screen'(在您安装软件包之后,包含在所有主要发行版中)。您将有一个典型的提示,但在一个持久的虚拟终端中。像往常一样启动你的matlab,省略任何背景。然后按 CTRL+A、D(先按 CTRL+A,然后按 d)。您将离开屏幕。您可以注销。如果你想回到你的屏幕会话,运行screen -r。如果你愿意,你也可以直接在第一时间启动screen matlab [...]。它的效果是,当 matlab 退出时,您的虚拟会话也会被删除。

【讨论】:

  • 我总是忘记screen 有多么有用! +1
  • 我不想做任何输入,比如你所说的这个 ctrl 和 d。我正在尝试制作一个脚本来在 144 个不同 VM 上的 144 个 matlab 上运行 matlab。我不想手动开始每一个。
  • 那么 screen 仍然适合你,因为你可以像 nohup 一样启动它。您还可以使用一个生成 144 个本地会话的屏幕 [一个屏幕会话可以容纳多个虚拟终端会话]。在每个会话中,您会自动连接到一个 VM 并运行 matlab。然后,您无需注销,并且可以通过单屏会话轻松监控所有会话。并不是说您需要这样做,这只是您的用例的另一种选择。能够监听对我来说至关重要的声音——在这么多的会话中会有一些失败。
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    我遇到了屏幕问题: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 &amp; 和从外部使用$remote tmux kill-session -t matlab 终止会话。

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

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

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

    【讨论】:

      【解决方案5】:

      如果您使用的是文件:

      nohup matlab -nodesktop -nodisplay &lt; file.m &gt; result.txt &amp;

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

      【讨论】:

        【解决方案6】:

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

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

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

        【讨论】:

        • nohup nice matlab -nodisplay -nosplash outfile.txt 2>&1 &
        猜你喜欢
        • 1970-01-01
        • 2013-07-09
        • 1970-01-01
        • 2021-04-06
        • 1970-01-01
        • 2011-08-19
        • 2011-12-28
        • 2015-10-18
        相关资源
        最近更新 更多