欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux服务器 远程安装matlab2018a并设为后台运行详细过程

程序员文章站 2022-03-31 23:02:31
...

**

一、 Linux服务器远程安装matlab2018a

**
在安装的时候我参考了这篇文章???? https://blog.csdn.net/m0_37775034/article/details/80876362,但是在我的安装过程中遇到了内存不足的问题,出现了如下图的错误:
Linux服务器 远程安装matlab2018a并设为后台运行详细过程
解决:对linux服务器进行扩容,扩容后需要挂载硬盘,参考文章:
https://www.cnblogs.com/phpk/p/10514704.html

按照第一篇博客安装好之后启动matlab没想到又报错了:
报错内容如下:License checkout failed Licensing error: -8,523.
在网上找了一会找到了一个解决的办法:

将*****中 /Linux-matlab2018/MATLAB R2018a Linux64
*****/MATLAB_Production_Server/R2018a/bin/glnxa64/matlab_startup_plugins/lmgrimpl/libmwlmgrimpl.so
复制到 /usr/local/MATLAB/R2018a/bin/glnxa64/matlab_startup_plugins/lmgrimpl/中 将原来的libmwlmgrimpl.so 覆盖
再重新打开./matlab

参考来自:https://blog.csdn.net/qq_36955294/article/details/102526079
再去运行就没啥问题了。

二、 可视化matlab界面

接下来是介绍如何远程登录服务器之后进行可视化,我用到的工具有Xshell和Xmanager,自行下载就好。安装好Xshell和Xmanger,然后用Xshell连接自己的服务器,输入ip 选择端口(默认22) 输入root账号和密码,然后要选择SSH->隧道的X11转移到Xmanger,
Linux服务器 远程安装matlab2018a并设为后台运行详细过程
Linux服务器 远程安装matlab2018a并设为后台运行详细过程
具体可参考: https://blog.csdn.net/qq_25406563/article/details/82082273

三、 后台运行matlab

在使用过程中我遇到了一个问题,只要一断网,服务器断开连接后程序就自己关闭掉了,我的数据非常大,一时半会肯定跑不完,所以我就想要让matlab在后台运行

在网上找到资料说可以用nohup命令,我参考了以下文章:https://blog.csdn.net/weixin_40098515/article/details/88535262

后台运行matlab脚本文件的方法:nohup 实现功能:
1.字符环境下运行matlab.
2.字符环境下运行matlab脚本文件, 脚本文件无图像的屏幕输出。
3.脚本文件需长时间运行,运行结果输出到文件。matlab的标准重定向到另一个文件。
4.客户端退出登陆后,matlab保持运行 ,直到脚本程序结束或错误退出时,matlab程序才退出。

实现方法: 采用nohup命令。

1、首先在Xshell里转到你要跑的代码的目录下 方法:cd ‘目录’
2、使用命令: nohup
matlab -nojvm -nodisplay -nosplash -nodesktop matlabscript.m 1>running.log 2>running.err &
或 nohup matlab -nojvm -nodisplay -nosplash matlabscript.m 1>running.log 2>running.err &
或: nohup matlab -nojvm -nodisplay matlabscript.m 1>running.log 2>running.err &

(注意使用matlab自带的并行计算工具包时,需要java,即不能使用-nojvm命令)
其中matlabscript是你要跑的文件名
running.log是matlab标准屏幕输出的重定向文件,将建立于服务器上;
running.err是matlab运行时的错误重定向文件,将建立于服务器上。

数字0,1,2的含义:
0——stdin(standard input,标准输入),1——stdout(standard output,标准输出),2——stderr(standard error,标准错误1>running.log 的意思是把标准输出(即本来应该在matlab的命令行窗口输出的东西)改输出到running.log中,其文件名(running)可以更改
2>running.err 的意思是把标准错误(同理)改输出到running.err中,文件名可更改
.log文件是日志文件,.err文件是错误文件,都可以在文本文档打开,这两个文件将会被存到当前的目录下

在这里可能会处找没有matlab这个命令 这时我们只要将matlab的命令写全也就是写成绝对路径就好了 ,比如下面我的命令
“/home/work/matlab/bin/matlab”就是我的matlab命令的绝对路径
nohup /home/work/matlab/bin/matlab -nodisplay -nosplash -nodesktop < /home/work/wjq/20200708/getU.m &

其中“/home/work/wjq/20200708/getU.m”就是我的matlab的脚本存放的路径,在这里,我没有向上文一样指定输出的重定向文件,但是系统会自动生成一个叫做nohup.out的文件来作为输出的重定向文件。它里面的内容就对应于matlab中的命令行窗口输出的东西。

Linux服务器 远程安装matlab2018a并设为后台运行详细过程
成功运行后会出现一个这样的提示,
Linux服务器 远程安装matlab2018a并设为后台运行详细过程
其中13057就是咱们再运行matlab的进程号,我们可以用top命令查看到。当我们不想运行matlab的时候就使用kill -9 进程号 杀死这个进程就好了。

但是这里存在一个问题,如果你的输出很多,文件很大,随着程序运行nohup的大小会越来越大。想要去掉这个输出文件怎么做呢?

Linux下还有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。
如果想要正常输出和错误信息都不显示,则要把标准输出和标准错误都重定向到/dev/null, 例如:

> # ls 1>/dev/null 2>/dev/null

还有一种做法是将错误重定向到标准输出,然后再重定向到 /dev/null,例如:

> # ls >/dev/null 2>&1

注意:**此处的顺序不能更改,否则达不到想要的效果,**此时先将标准输出重定向到 /dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,于是一切静悄悄:-)
由于使用nohup时,会自动将输出写入nohup.out文件中,如果文件很大的话,nohup.out就会不停的增大,这是我们不希望看到的,因此,可以利用/dev/null来解决这个问题。

nohup ./program >/dev/null 2>log &

如果错误信息也不想要的话:

nohup ./program >/dev/null 2>&1 &

以上是我学习的一个笔记记录,供大家参考,如有错误,欢迎指正 ,一起加油~