目录
- 核心概念:本地机 vs. 服务器
- 准备工作:在服务器上安装 MATLAB
- 连接服务器:使用 SSH
- 在服务器上运行 MATLAB
- 交互式模式 (推荐)
- 非交互式模式 (后台运行脚本)
- 文件传输:在本地机和服务器间交换文件
- 高级主题:并行计算
- 使用 Parallel Computing Toolbox
- 使用 MATLAB Parallel Server (以前叫 Distributed Computing Server)
- 常见问题与故障排除
- 总结与最佳实践
核心概念:本地机 vs. 服务器
要明确你的工作流程:

- 你的本地机: 你的个人电脑,无论是 Windows、macOS 还是另一台 Linux,你在这里编写代码、查看结果、进行交互。
- 远程 Linux 服务器: 运行 MATLAB 的真正“大脑”,它通常拥有更强的 CPU、更多的内存,并且可能连接着 GPU 或计算集群。
关键区别:
- 图形界面: 服务器通常是“无头”的,没有显示器,你不能直接在服务器上打开 MATLAB 的图形窗口。
- 计算资源: 服务器资源是共享的,需要遵守使用规则,不能长时间独占。
工作流:
- 通过 SSH 从本地机安全地连接到服务器。
- 在服务器的命令行中启动 MATLAB。
- 编写/运行代码,进行计算。
- 将结果文件从服务器下载到本地机查看。
准备工作:在服务器上安装 MATLAB
这部分通常由系统管理员完成,但了解过程很有帮助。
-
获取许可文件: MATLAB 需要
license.lic文件来运行,这个文件通常指向一个网络许可管理器,如果你是个人用户,可能需要一个本地许可文件。
(图片来源网络,侵删) -
下载安装包: 从 MathWorks 官网下载适用于 Linux 的安装包(通常是
.zip或.tar.gz格式)。 -
安装: 解压并运行安装程序,通常需要
sudo权限。# 解压 unzip matlab_R2025a_glnxa64.zip cd install # 运行安装程序 sudo ./install
-
激活: 按照安装向导的提示,选择“使用文件密钥”并指定你的
license.lic文件。 -
添加到环境变量 (重要): 为了能从任何目录直接运行
matlab命令,需要将 MATLAB 的bin目录添加到系统的PATH环境变量中,这通常由安装程序自动完成,但你可以检查~/.bashrc或/etc/profile文件。
(图片来源网络,侵删)
连接服务器:使用 SSH
这是最基础也是最关键的一步,打开你本地机的终端 (Windows 用户可以使用 PuTTY, MobaXterm 或 Windows Terminal + OpenSSH)。
基本命令:
ssh -X your_username@server_ip_address
your_username: 你的服务器用户名。server_ip_address: 服务器的 IP 地址或域名。-X(大写): 这是 X11 Forwarding 的关键开关,它允许你在本地机上显示远程服务器上运行的图形程序窗口,对于 MATLAB 的图形界面至关重要。
第一次连接时,你会看到类似下面的提示,输入 yes:
The authenticity of host 'server_ip_address (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:...
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
输入密码: 之后,系统会提示你输入你的服务器密码,输入时不会显示任何字符,这是正常的,直接输入然后按回车。
连接成功后,你会看到服务器的命令行提示符,
your_username@server_name:~$
在服务器上运行 MATLAB
连接成功后,就可以开始运行 MATLAB 了。
A. 交互式模式 (推荐)
这是最直观的方式,适合开发、调试和探索性分析。
启动 MATLAB: 在服务器命令行中输入:
matlab
注意: 如果系统找不到 matlab 命令,说明它没有被添加到 PATH 中,你可以使用完整路径启动,
/usr/local/MATLAB/R2025a/bin/matlab
选择启动模式: 启动后,MATLAB 会询问你如何启动:
MATLAB is selecting SOFTWARE OPENGL rendering.
To get started, type one of these commands: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.
>> Use the Desktop menu item to enable the desktop environment.
>>
>> Use the Desktop menu item to select a desktop layout.
>>
>> Use the command line to start MATLAB without the desktop.
>>
>> To connect to an existing MATLAB session, use:
>> -r "matlab -desktop" &
>>
>> Which desktop would you like to use (specify selection or type name):
>> 1: None
>> 2: Compact
>> 3: Default
>>
>> Selection:
- 选择
3(Default): 这会启动完整的 MATLAB 桌面环境。前提是你的 SSH 连接使用了-X选项,几秒钟后,MATLAB 的图形界面就会出现在你的本地电脑屏幕上!你可以像在本地一样使用它。 - 选择
1(None): 这会启动一个命令行模式的 MATLAB,你会看到一个>>提示符,所有操作都需要通过命令完成,plot(1:10),然后图像会以新的窗口弹出(同样需要-X)。 - 选择
2(Compact): 一个精简版的图形界面。
退出 MATLAB:
在 MATLAB 命令行中输入 exit 或 quit,或者直接关闭图形窗口。
B. 非交互式模式 (后台运行脚本)
当你只需要运行一个长时间的计算任务,并且不需要在过程中进行交互时,这种模式非常有用,它会“安静”地在后台执行,完成后你再来取结果。
使用 nohup 和 &
nohup: 让命令在用户退出登录后仍然继续运行。&: 将命令放到后台执行。output.log: 将所有输出(包括标准输出和错误信息)重定向到这个日志文件。
# 在你的脚本所在目录下运行
nohup matlab -batch "run('my_long_script.m')" > output.log 2>&1 &
# 命令解释:
# matlab -batch: 以非交互模式启动 MATLAB
# "run('my_long_script.m')": 要执行的命令
# > output.log: 将标准输出重定向到 output.log
# 2>&1: 将标准错误也重定向到和标准输出一样的地方
# &: 将整个命令放入后台
使用 screen 或 tmux (更强大)
screen 或 tmux 是终端复用器,可以让你创建一个持久的会话,即使你关闭了 SSH 连接,这个会话里的程序也会继续运行。
- 创建一个新会话:
screen -S matlab_session
- 在会话中启动 MATLAB 后台任务:
nohup matlab -batch "run('my_long_script.m')" > output.log 2>&1注意:这里没有
&,因为screen会话本身就在后台。 - detach 会话 (退出但会话保持运行):
按下
Ctrl+A,然后按D。 - 重新连接到会话 (查看进度):
screen -r matlab_session
- 杀死会话:
如果任务完成或需要终止,可以先连接进去,然后按
Ctrl+C终止 MATLAB 进程,再按Ctrl+A+D退出,或者直接杀死整个会话:screen -X -S matlab_session quit
文件传输
你需要在本地机和服务器之间交换 .m 脚本和数据文件。
-
图形化工具 (最简单):
- MobaXterm / FileZilla / WinSCP: 这些工具提供了图形化的 SFTP 文件浏览器,你可以像在资源管理器里一样拖拽文件。
-
命令行工具 (更灵活):
-
scp(Secure Copy): 在本地机的终端中使用。# 从本地上传文件到服务器 scp local_file.txt your_username@server_ip:/path/to/server/directory/ # 从服务器下载文件到本地 scp your_username@server_ip:/path/to/server/file.txt ./
-
rsync(Remote Sync): 更强大的工具,适合同步整个目录,并且可以断点续传。# 同步本地目录到服务器目录 rsync -avz -e ssh /local/path/ your_username@server_ip:/remote/path/
-
高级主题:并行计算
MATLAB 的并行计算能力是其强大之处。
A. 使用 Parallel Computing Toolbox (本地多核)
如果你的服务器有多个 CPU 核心,你可以让 MATLAB 在单个机器上并行计算。
- 启动并行池:
在 MATLAB 命令行中输入:
parpool % 或者直接使用 ppool
MATLAB 会自动检测可用的核心并创建一个“并行池”(一组 worker)。
- 使用
parfor和spmd:parfor: 并行for循环,只需将for替换为parfor,MATLAB 会自动分配任务。parfor i = 1:100 A(i) = my_long_computation(i); endspmd: 单程序多数据,用于对数据进行分块并行处理。
B. 使用 MATLAB Parallel Server (集群计算)
如果你的服务器是一个包含多台“节点”(node)的计算集群,你需要 MATLAB Parallel Server 来协调计算。
-
配置: 系统管理员需要在集群的调度器(如 PBS, LSF, SLURM)上配置 MATLAB Parallel Server,你需要一个集群配置文件 (
cluster profile)。 -
在 MATLAB 中设置集群配置:
- 在 MATLAB 的主菜单中,进入 Home -> Parallel -> Discover Clusters。
- 系统会扫描并列出可用的集群配置,选择你需要的那个。
-
在集群上运行任务: 使用
batch函数,它会将你的任务提交给集群调度器。% 创建一个任务脚本 createJob('my_cluster_job'); createTask('my_cluster_job', @my_function, 1, {input_args}); submit(my_cluster_job); % 或者更简单的 batch 函数 future = batch(@my_function, 1, {input_args}, 'Pool', 4); % 请求4个 worker你的任务会在集群的某个节点上运行,不会阻塞你的登录节点,你可以随时
fetchOutputs(future)来获取结果。
常见问题与故障排除
-
问题:SSH 连接后,MATLAB 图形界面无法显示,或出现
Qt platform plugin错误。-
原因: 服务器缺少运行 GUI 所需的图形库。
-
解决: 安装
libxcb相关库。# 对于 Debian/Ubuntu sudo apt-get update sudo apt-get install libxcb-cursor0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xfixes0 # 对于 CentOS/RHEL/Fedora sudo yum install libxcb
-
根本原因: 最可能的原因是连接时忘记使用
-X选项,请确保你的 SSH 命令是ssh -X ...。
-
-
问题:运行
matlab命令提示 "command not found"。- 解决: MATLAB 没有被添加到
PATH,使用完整路径启动,或者联系管理员配置环境变量。
- 解决: MATLAB 没有被添加到
-
问题:MATLAB 启动非常慢。
- 原因: 许可证验证、Java 虚拟机加载等。
- 解决: 尝试使用
jvm选项启动,指定 Java 虚拟机路径,或者使用-nojvm选项启动(无 JVM,但会失去部分功能)。
-
问题:在服务器上绘图,图片窗口一闪而过。
- 原因: MATLAB 在显示图像后立即将控制权返回给命令行,导致窗口关闭。
- 解决: 在绘图后加上
pause或uiwait命令,让窗口保持等待状态。plot(1:10); pause; % 按任意键继续 % 或者 % uiwait(gcf); % 等待用户关闭图形窗口
总结与最佳实践
- SSH 连接是基础: 始终使用
ssh -X your_username@server_ip连接。 - 交互式开发,非交互式运行:
- 开发阶段: 使用交互式模式 (
matlab),方便调试和可视化。 - 计算阶段: 使用
nohup或screen+matlab -batch在后台运行耗时任务。
- 开发阶段: 使用交互式模式 (
- 文件管理要清晰: 使用
scp或图形化工具管理文件,保持本地和服务器目录结构整洁。 - 尊重服务器资源:
- 小任务用登录节点: 简单的编译、测试等可以在登录节点完成。
- 大任务用计算节点: 长时间、高负载的计算任务务必通过作业调度器(如 SLURM)提交到计算节点,避免影响他人。
- 拥抱并行: 充分利用服务器的多核和集群资源,使用
parfor和batch大幅提升计算效率。
希望这份详细的指南能帮助你在 Linux 服务器上高效地使用 MATLAB!
