Linux服务器 远程安装matlab2018a并设为后台运行详细过程
**
一、 Linux服务器远程安装matlab2018a
**
在安装的时候我参考了这篇文章???? https://blog.csdn.net/m0_37775034/article/details/80876362,但是在我的安装过程中遇到了内存不足的问题,出现了如下图的错误:
解决:对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,
具体可参考: 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中的命令行窗口输出的东西。
成功运行后会出现一个这样的提示,
其中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 &
以上是我学习的一个笔记记录,供大家参考,如有错误,欢迎指正 ,一起加油~
上一篇: 斐波那契?
下一篇: cuda编程实现计算两个向量之间的距离