일반적으로 Mathematica는 윈도우에서 사용할 경우 frontend 환경인 Mathematica Notebook으로 작업을 한다. 하지만, 계산량이 큰 작업의 경우 혹은 원격으로 작업을 하는 경우라면 Mathematica notebook으로 계산을 하는 것이 아닌, C/C++과 같이 terminal background에서 계산이 진행되길 원한다. 다행스럽게, Mathematica에서도 terminal에서 작업을 할 수 있다.
기본적으로 terminal에서 작업을 하는 경우, terminal의 명령어는 "math
"이다. 리눅스 terminal에서 math
를 입력하면 아래와 같이 Mathematica Kernel이 실행된다. 이러한 Mathematica Kernel 작업환경은 python과 동일하다고 생각하면 될 것 같다.
하지만 우리가 원하는 것은 위와 같은 환경에서 작업을 하는 것이 아닌, Mathematica code가 포함된 script file을 커널 환경에서 실행시키는 것이다. 그러기 위해선 Mathematica code가 포함된 파일의 확장자가 .nb
가 아닌 .m
이어야한다.
간단한 예시로써, 아래와 같은 mathematica code file이 있다고 하자.
a) 파일 이름: example.m
(* ::Package:: *)
\[Nu]=0.25;
\[Rho]=1.7;
l=100;
q=157.5;
p=175;
a= 9.8;
H=8;
G[h_]:=\[Rho] (p^2) (1+I \[Delta]) ((q/p+(1-q/p)(1-h))^2)
\[Lambda][h_]:=(2 \[Nu])/(1-2 \[Nu]) G[h]
\[Lambda][2]
AppendTo[$Echo, "Stdout"]
b) 스크립트 파일 실행 [1][2]
위 코드를 terminal 환경에서 실행시키고자 한다면 아래와 같이 명령어를 입력하면 된다.
(1) math -run < example.m
- 위 명령어는 다음 명령어와 동일함: math -run "<<example.m"
- 위 명령어를 통해 스크립트를 실행하면, 그림 1과 같이 REPL* 인터페이스 내에서 실행된다.
* REPL (Read-Evaluate-Print loop)
• 하나의 입력을 받아서(Read single input), 처리하고(Evaluate), 결과를 반환하는(Print result) 환경으로 구현된 프로그램
• 커맨드라인 인터페이스를 가지는 프로그램
(2) math -run -noprompt "<<my-mathematica-script.m"
- prompt없이 스크립트가 실행됨
- 만일, nohup 명령어와 같이 쓰면 Mathematica 스크립트를 터미널의 background에서 실행시킬 수 있다.
: nohup math -run "<<my-mathematica-script.m"
만일 실행 결과물 혹은 로그를 확인하고자 한다면, 아래와 같이 명령어를 입력하면 된다.
math -noprompt -run < script.m > log.txt
(1)과 (2)을 실행시켰을 때, 아래와 같이 나온다.
Reference:
[1] openmetric.org/til/programming/run-mathematica-script-in-terminal/
[2] www.maths.cam.ac.uk/computing/software/mathematica/mathematica-bg
'프로그래밍 언어 > Mathematica' 카테고리의 다른 글
[Mathematica] Intersection between a line and objects (0) | 2023.11.18 |
---|---|
[Mathamatica] Mathamatica 무료로 이용하기: Wolfram Engine (0) | 2022.03.27 |
[Mathematica] Jupyter 노트북으로 Mathematica 사용하기 (0) | 2022.03.27 |
[Mathematica] LLVM ERROR: Cannot select: intrinsic %llvm.x86.sse41.pblendvb (0) | 2021.03.06 |
[Mathematica] 리눅스에 설치 및 여러 계정들이 모두 사용할 수 있게 설정하기 (0) | 2021.01.30 |
댓글