我将使用SSH在远程Linux服务器上运行Matlab程序。 我想知道如何在Linux中运行Matlab只使用命令行,这意味着没有图形环境?
感谢。
答案 0 :(得分:20)
使用以下标志启动MatLab
matlab -nodesktop -nojvm -nosplash
-nodesktop
会阻止桌面
-nojvm
阻止启动java虚拟机
-nosplash
会阻止启动启动画面。
请注意,正如Li-aung Yip在评论中指出的那样,Mathworks不建议使用-nojvm
标志。
答案 1 :(得分:7)
命令为matlab -nodesktop
。
答案 2 :(得分:4)
matlab -nodisplay
然后-nodesktop
和-nosplash
是不必要的。它们在文本模式下没有意义。
添加-nojvm
可能不是一个好主意,除非您有充分的理由这样做。如果没有JVM,您将失去一些功能,这些功能的缺失可能会导致以后混淆。资料来源:same link as above。在-nodisplay
之上,它不会使您的非图形化Matlab会话的图形化程度降低。
以下是一些以非交互方式运行命令的方法。
方式1:
matlab -nodisplay < myScript.m
将exit
作为例如myScript.m
中的最后一个命令。
方式2:
matlab -nodisplay -r "try, myFunction(); catch e, disp(getReport(e)), exit(7), end, exit()"
第二种方式更可取,因为例如如果代码中间有错误,则第二种方式将打印错误消息并以非零代码退出。而第一种方法相当于直接输入命令,而不管Matlab说什么(可能是错误信息)。
如果下一个问题是&#34;如何在文本模式Matlab中禁止 welcome 消息?&#34;,it seems there is NO good way to get rid of it。
答案 3 :(得分:0)
将其他答案与更多错误处理放在一起,将以下内容另存为可执行文件def post(self, request):
brand_form = BrandModelForm(request.POST, request.FILES) # Debug point
if brand_form.is_valid(): # Step Into this
file_name_errors, csv_name_errors, file_name_alphanumeric_error = self._validate_data(brand_form)
:
matlab-headless
现在您可以通过以下方式运行Matlab命令:
#/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
答案 4 :(得分: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