16

我将使用 SSH 在远程 Linux 服务器上运行 Matlab 程序。我想知道如何只用命令行在 Linux 中运行 Matlab,这意味着没有图形环境?

谢谢。

4

5 回答 5

25

使用以下标志启动 MatLab

matlab -nodesktop -nojvm -nosplash
  • -nodesktop防止桌面

  • -nojvm阻止启动 java 虚拟机

  • -nosplash防止启动闪屏。

请注意,正如 Li-aung Yip 在评论中指出的那样,Mathworks 不建议使用该-nojvm标志。

于 2012-06-15T07:57:40.337 回答
7

命令是matlab -nodesktop

http://www.mathworks.de/help/techdoc/ref/matlabunix.html

于 2012-06-15T07:58:45.300 回答
7
matlab -nodisplay

请参阅此处-nodisplay

然后-nodesktop-nosplash是不必要的。它们在文本模式下没有意义。

-nojvm除非您有单独的充分理由,否则添加可能不是一个好主意。如果没有 JVM,您将失去一些功能,这些功能的缺失可能会在以后导致混乱。来源:与上述相同的链接。最重要的是-nodisplay,它不会使您的非图形化 Matlab 会话的图形化程度降低。


这里有几种非交互方式运行命令的方法。

方式一:

matlab -nodisplay < myScript.m

exit例如,将最后一个命令放入myScript.m.

方式二:

matlab -nodisplay -r "try, myFunction(); catch e, disp(getReport(e)), exit(7), end, exit()" 

第二种方式更可取,因为例如,如果代码中间有错误,那么第二种方式将打印错误消息并以非零代码退出。而第一种方法相当于直接输入命令,不管 Matlab 说什么(可能是错误消息)。

如果下一个问题是“如何在文本模式 Matlab 中抑制欢迎消息?”,似乎没有很好的方法来摆脱它

于 2016-07-21T10:30:57.577 回答
0

将其他答案放在一起加上更多错误处理,将以下内容另存为可执行文件matlab-headless

#/usr/bin/env bash

# restore the "sane" state of the terminal at the end
# otherwise interrupting the process may leave the terminal messed up
trap 'stty sane' EXIT
command="try, $1;, catch e, stack=getReport(e); fprintf(1, '%s\n', stack);, end, exit;"

# tail gets rid of the welcome message banner
matlab -nodisplay -nodesktop -nosplash -r "$command" | tail -n +11

现在您可以运行 Matlab 命令:

matlab-headless "somecommand('bla', 42)"
于 2020-07-02T10:27:20.500 回答
0

根据您的需要,另一种方法是:

matlab -nosplash -nodesktop -wait -log -r "Matlab Script Line 1;Matlab Script Line 2;exit;"

这与 Azure DevOps Pipeline 用于将所有 Matlab 作业输出记录到其在线 CLI 窗口的方法相同。

参考:自托管 Windows 代理

位置:C:\agent\_work\_tasks\RunMATLABCommand_28fdff80-51b4-4b6e-83e1-cfcf3f3b25a6\0.2.15\bin\run_matlab_command.bat

于 2021-01-08T19:34:23.130 回答