后台运行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文件是错误文件,都可以在文本文档打开,这两个文件将会被存到当前的目录下

3、Xshell里输出的结果:

nohub 执行python脚本 nohup 运行脚本_matlab

显示出来的18369是进程号,这样可以使用top命令看到自己要跑的代码在运行,并且进程号和这里显示的一致,表示程序提交后台成功。

4、在nohup运行成功后,不能直接点击关闭按钮,而应该按下任意键,恢复到输入状态,然后按exit命令退出。

nohub 执行python脚本 nohup 运行脚本_nohub 执行python脚本_02

这样退出后在top中看到代码还在运行,如果点击叉号退出程序还是会中断。

5、
另外补充:
(1)如果你想中断正在运行的matlab请使用
kill -9 进程号
或 fg %n ; Ctrl+C
(2)如果你想在字符环境的matlab中运行脚本,请使用
run 脚本文件名(不含.m扩展名)
(3)如果你想用ssh运行有X界面的matlab,登陆时请使用
ssh 主机名 -l 用户名 -X

如果是python代码:
命令如下:
nohup python 文件名.py 1>running2.log 2>running2.err &

参考链接:linux下后台运行matlab