Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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
已运行会话上的matlab命令(来自bash/命令行)_Bash_Matlab - Fatal编程技术网

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

已运行会话上的matlab命令(来自bash/命令行),bash,matlab,Bash,Matlab,如何在刚刚创建的会话上执行matlab命令 换句话说,我希望有一个matlab会话在后台运行,并在任何给定时间从任意终端执行matlab命令和/或脚本,而无需创建新会话。一种可能性是启动一个会话,然后在其上启动matlab,并从中分离。任何时候你想使用它,只要启动一个终端并重新连接屏幕会话 基本上启动屏幕(只需在终端键入screen),然后启动matlab会话。然后从会话中分离(Ctrl+A,然后按D),您将返回到终端。您可以关闭窗口,没有问题,屏幕上启动的任何进程都将继续运行。无论何时,只要想

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


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

一种可能性是启动一个会话,然后在其上启动matlab,并从中分离。任何时候你想使用它,只要启动一个终端并重新连接屏幕会话

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


请注意,屏幕会话可以有任意数量的窗口,您也可以同时有多个屏幕会话。祝您在一些在线教程中好运,这是一个非常有用的工具,特别是但不仅仅是,如果您大量连接到可能需要运行长作业的其他系统。

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

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

$ matlab -nodesktop -nojvm &
现在,一个名为matlab的
tmux
会话正在运行没有gui的matlab

创建此shell脚本:

mx

tmux new -s matlab "matlab -nodesktop -nojvm"
在另一个终端中,您现在可以运行引用的matlab命令:

#!/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
甚至可以通过管道传递命令:

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