在已经运行的会话上使用matlab命令(来自bash /命令行)

时间:2012-09-06 18:36:07

标签: bash matlab

$ matlab -nodesktop -nojvm &

我如何在刚刚创建的会话上执行matlab命令?

换句话说,我希望在后台运行一个matlab会话,并在任何给定时间从任意终端执行matlab命令和/或脚本,而无需创建新会话。

2 个答案:

答案 0 :(得分:8)

我建议使用与 carandraug 类似的解决方案,只是我更喜欢tmux作为多路复用器。正确传递命令可能有点棘手,因此创建一个处理细节的shell脚本。

假设您已经在这样的终端中启动matlab

tmux new -s matlab "matlab -nodesktop -nojvm"

现在名为matlab的tmux会话正在运行没有gui的matlab。

创建此shell脚本:

<强> MX

#!/bin/bash

if [[ $# -eq 0 ]]; then
  while read; do
    tmux send-keys -t matlab "$REPLY"$'\n'
  done
else
  tmux send-keys -t matlab "$@"$'\n'
fi

在另一个终端中,您现在可以运行带引号的matlab命令:

mx "A = reshape(1:9, 3, 3)"

甚至可以通过管道传递命令:

for mat in A B C; do echo "$mat = reshape(1:9, 3, 3)"; done | mx

答案 1 :(得分:3)

可能是开始screen会话,然后在其上启动matlab,并从中分离。无论何时你想使用它,只需启动终端并重新连接该屏幕会话。

基本上启动屏幕(只需在终端输入screen),然后启动matlab会话。然后从会话中分离( Ctrl + A ,然后按 D ),然后您将返回终端。你可以关闭窗口没问题,任何在屏幕上启动的进程都会继续运行。无论何时你想再次获得它(它被称为重新连接会话),只需使用screen -r。查看所有其他选项的手册页。

请注意,屏幕会话可以包含任意数量的窗口,您也可以同时拥有多个屏幕会话。祝你好运一些在线教程,它是一个非常有用的工具,特别是但不仅如此,如果你将很多东西连接到可能需要长时间工作的其他系统上。