EDA365电子论坛网
标题:
linux远程运行matlab
[打印本页]
作者:
baqiao
时间:
2020-4-13 10:39
标题:
linux远程运行matlab
$ P1 ?, _: @- W( b
Matlab on Linux:
9 P1 X2 ?- C6 C1 L: Y- U8 X6 e- ^3 U
% _9 W2 ~7 T# q+ u, a5 Z8 q
1、不开启图形界面
' q' \8 q/ s3 D6 r
( x0 u5 F' {7 i8 S, E- S6 H/ V
matlab -nodesktop –nosplash
/ H# o3 B$ y4 L8 c4 y
. s1 }- Y( G: O3 N5 q7 B$ J! b- _
或者matlab –nodisplay
# m" J8 r7 h) K& P) r! G
) O9 G: G+ v- H( J
或者matlab -nojvm –nosplash
b+ j5 H1 D; n4 B7 Z6 j1 d
8 ]* h! a. P+ U4 X0 z& Y
2、 matlab程序也可以在命令行里直接运行,只需要使用 -r 选项。比如运行当前目录下的example.m
/ _4 e# b1 H5 M4 D5 V
7 N/ G! E. p9 ~! b' t
matlab -nodesktop -nosplash -r example
' @1 y$ s& T7 g2 [$ Q, S5 S( d
# Q1 K4 r& p% w0 V5 q9 d
或者matlab -nojvm -nosplash -r example
$ R" W: u7 ]( J E
2 u# d# K& l3 o
或者matlab -nodisplay -r example
+ G6 G( l- m# o2 z+ s+ G9 Q# t
2 e, _6 w6 a6 D8 \/ P
3、可以将如下命令加到~/.bashrc文件
: I8 S- S! g5 ^7 m4 g
4 K, I) P& E4 X& g' x4 @8 }
alias mrun='matlab -nodesktop -nosplash -r'
( v% r3 `" A/ o9 q+ u
8 u8 O- \$ N6 X$ n+ f, U; a7 V
这样下次(或者执行source ~/.bashrc)之后就可以直接
7 O9 I7 M! G; X2 P) y: M" |3 o, l
3 d; b' I' m, p* {: Z
mrun example
, x! O1 }( e: @; X) {- _
9 `# D, p( ~ |
来在命令行运行matlab文件。
. ]( Z$ g; s! }/ Q$ v. x: Y
5 B+ V7 z$ }9 u9 v0 ?- N
4、 如果使用 -nodisplay -r 选项运行,当程序中有figure()命令时会出错,可以使用如下选项抑制图形的显示:
: c: e7 w$ J7 i
0 z8 e; D3 L, b. U2 p; ?
figure('visible','off');
; B# l0 r: Y& _
6 @# z5 q4 _ D! k/ o: i& Z8 ?$ f
并使用如下命令将图形输出到文件:
$ L! y& m7 A% t T- E) ?$ c8 M
8 D; A x2 r! a, H# L( H
print('-deps','example.eps');
& Y% u1 c/ c: ^: j" ] L& o+ l
- j6 x! \* u& L5 D0 d B0 y
或者
! U9 ^/ ? i# c* O6 G* }
$ [, @' a7 F% }' |" l+ d. k
hgsave('example.fig');
& z2 H1 d, b4 h
1 j0 T" Z1 h2 R/ m7 g
5、图形方式:不会
: q% x! J: g; X* \1 q
' x9 `* {" R' I4 h1 D# ]# j+ W
& W( i$ @& c) U6 h5 Y' X
后台运行Matlab:
: n D+ P9 k7 ~2 p+ h; H0 a2 ~
* V5 C" U6 b* {
1、实现功能:
$ U; l2 g& F* Y& O2 F
1.字符环境下运行matlab.
: d# H1 r# @% ~( k
2.字符环境下运行matlab脚本文件,脚本文件无图像的屏幕输出。
L' f& K2 F& }
3.脚本文件需长时间运行,运行结果输出到文件。matlab的标准重定向到另一个文件。
( m" B8 a: A4 k" j& K/ T8 M
4.客户端退出登陆后,matlab保持运行 ,直到脚本程序结束或错误退出时,matlab程序才退出。
: A6 ~9 n, G" K3 p8 A9 H \
8 {$ X' P5 `1 l0 }
2、 实现方法:采用nohup命令。
5 E: C0 u& S% z
/ h9 B. ]1 Q5 Y: T
3、使用命令:
3 c M7 p' P4 b. R, Z) {
nohup /usr/matlab/bin/matlab fill.out &
) y G5 ]& l+ M: U
就可以了,fill.m表示你的文件名. fill.out代表你的输出转到fill.out文件中。比如,matlab中的命令sin(1:10),结果应该输出到command window中的,但是现在转到了fill.out文件中
# u# I7 M" t( x1 d3 y ~, S" j3 _
' o4 {2 u6 f0 P
例如:我在/home/jsh/yangting/文件夹下有个test2.m文件
, V/ R( z ]4 b3 M" i
( T2 n2 b- w6 W' L) x5 b
那么,当matlab在/home/jsh/yangting/文件夹下打开时,
U# g4 P1 E" Z6 Q/ S
" i/ g& j2 M# f0 N
命令为
) N0 X$ K) ]# i3 W7 I; B% {
$ }/ i& {! y+ H/ _. m3 ]2 ]2 o" n
nohup matlab fill.out &
+ m5 ?, h( H- X. m' v
3 l& R0 g2 K% J; d7 f
注意:在nohup运行成功后,不能直接点击关闭按钮,而应该按下任意键,恢复到入状态,然后按exit命令退出。
4 x% B( B. L! M) O( F+ N9 h
2 m6 S$ G9 n/ f$ R! W
使用命令:
0 ~% p8 A; M, \! s2 T
nohup matlab -nojvm -nodisplay -nosplash -nodesktop < matlabscript.m 1>running.log 2>running.err &
0 A- p* K3 _' s- G# u% J v
或
4 |( y/ @6 J* H% K8 S3 p
nohup matlab -nojvm -nodisplay -nosplash < matlabscript.m 1>running.log 2>running.err &
5 Y4 }+ E @7 ?" w0 x* J2 J
或:
. h1 B% c4 }. y1 H
nohup matlab -nojvm -nodisplay < matlabscript.m 1>running.log 2>running.err &
7 o+ B& w0 Z0 W9 O
! J' i' F" Y0 Z- k& n- y, u
其中:
6 L% z" J% ~7 q9 `( c# }5 f& R
matlabscript.m是将要运行的脚本文件,存在于服务器上;
$ N% M% s' C" S: W
running.log是matlab标准屏幕输出的重定向文件,将建立于服务器上;
4 B: B A% b/ a; P
running.err是matlab运行时的错误重定向文件,将建立于服务器上。
8 h2 s7 U3 G; U+ ?" ~2 I4 @
6 K/ ]0 X. j5 l7 M; F
4、另外补充:
% \, A3 T' P( R9 `
(1)如果你想中断正在运行的matlab请使用
5 k/ t3 e, C: @! a9 E+ S% K5 Z& f
kill -9 进程号
/ D3 }- T% D7 l! e4 D d" {
或 fg %n ; Ctrl+C
4 E& e5 F Y: o9 @+ S' S
(2)如果你想在字符环境的matlab中运行脚本,请使用
% Y+ `( s% l7 S d( A
run 脚本文件名(不含.m扩展名)
+ h( v; O7 u1 {$ J/ c
(3)如果你想用ssh运行有X界面的matlab,登陆时请使用
4 h7 C; ~; o" Q- ^ f& _
ssh 主机名 -l 用户名 -X
9 M0 P* m; P+ P9 u6 y
- k- [+ T+ B: n3 i
& @$ B ]" @0 I* }' D$ Y- D
. X! Q7 Z% f+ [3 D9 m1 k
=========================================================
( ^( T* X( u) W7 L* [
. S, W2 ~. a+ I5 t+ o
+ T# s/ `1 _5 \$ r3 N' Q+ N
让程序在前台后台之间切换。 Linux 提供了 fg 和 bg 命令,让你轻松调度正在运行的任务。
" c" H7 U3 @# H- \
假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctrl-Z ,挂起这个程序,然后可以看到系统提示:
0 z$ X* c. N, `6 X9 s
[1]+ Stopped /root/bin/rsync.sh
3 p: Q% _& H! L
然后我们可以把程序调度到后台执行:(bg 后面的数字为作业号)
, @' O9 X7 p' \6 K- w' V
#bg 1
4 ]" O: S2 A( w
[1]+ /root/bin/rsync.sh &
& [+ i! u' r: ?# H; D% I+ K
! n- D+ t$ \2 @) l6 G2 S. m- _
, Q6 [: e6 R6 x" U( m9 W
用 jobs 命令查看正在运行的任务:
/ O4 v3 B' l! f `
#jobs
& I, ?- `# ^& g2 v
[1]+ Running /root/bin/rsync.sh &
; ], b0 F; ?3 n6 Z7 I( @: g
7 z L" ]/ h( M
( ?6 o* O; w) y/ }/ N5 {
如果想把它调回到前台运行,可以用
3 j0 i K5 f9 n- O8 Q
#fg 1
7 W/ x2 Z, ?% k( m2 k0 H
/root/bin/rsync.sh
$ |0 d: X1 S6 E, J% @1 g
这样,你在控制台上就只能等待这个任务完成了。
; J2 Z8 G$ _9 \: Y3 \0 c$ S( l
1 g# M. C- I, O) V9 }% a) x [
) ~4 k9 A. v+ F& `( N, y
$ z6 v3 o) q6 a% h
* a5 G) I* n8 a1 x1 J& G- B! n
" o% Z. f" e* I5 w7 N( Z# t S
[Ctrl-z]是当前任务转到后台中断。
! ~, M9 G1 p& H% D3 v
3 E c- |, n- l" P; x6 W" N6 h
fg 1可以把1的任务转回来当前终端。
/ [5 T/ F3 Q5 A- Y
- R& [1 B& s G- N3 t* m
bg 1
+ @3 L1 h3 N8 s3 R M6 ]
' M% z0 ^. F6 K1 p
可以把1的任务转回到后台终端。
& j- p( l0 Q$ {$ d- G p
2 `' e# J/ j7 G
jobs -l 可以查看当前进行的任务。
& h* S; d/ s' j: \
. _+ |0 |' F1 h9 f& z
5 W( J. F' \ D# C
8 g1 f' N* T' H6 @. l2 {1 K" w8 d
当一个任务bg时,当前的treminal关闭就会关闭,可以用
. e% O7 T( f) }
) H+ X! \+ a2 `" q
nohup来标识可以继续运行(nohup->no hang up不挂断)
; E& D2 O9 d" _) F' N3 X
, w" h0 r7 O7 D8 q- [! A
命令是
- G! p7 d4 {6 y, M
- C! Z3 V* X2 s0 n# P
nohup command &
& b( f9 b. Y9 N9 Z u$ ~4 P
p1 Z: W0 o; n' y: ~+ i
$ Z0 B" \* @* k0 M& @( n/ D& L
" c; b' C8 {# ?% e9 p; U
通过ps -aux命令 会发现command的父进程变成了1,在关闭窗口之后
作者:
NingW
时间:
2020-4-13 20:10
linux远程运行matlab
作者:
NNNei256
时间:
2020-4-14 18:29
linux远程运行matlab
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2