How to run Matlab script with parameters using "nohup" to run in background, detached from the terminal (Redhat)

10 views (last 30 days)
I have a script that has a function which take in 3 positional arguments. If I use
matlab -nodisplay -nojvm
to get the matlab terminal and then use below inside the MatLab terminal
myscript . dataset_name False
I could make it run.
But this is problematic as this is a long running program in a remote server, and I cannot guarantee a stable internet connection to keep the tunnel open. Therefore I want to
  1. Run this as a single command in Linux terminal itself
  2. Detach the process from the terminal, and run in background, prefereably similar to how we do when we run a Python script in using the terminal. Which is:
nohup python myscript.py > experiment.log 2>&1 &
So to do this first I need to address the point 1, and then 2. So far I have tried out the below answer but it didn't work for me:
matlab -nodisplay -nosplash -nojvm -nodesktop -r "myscript . dataset_name False"
Gives: Not enough input arguments. Error in myscript. "fprintf('Base directory: %s\n',base_dir);"
Here base_dir is the first argument. I have tried out putting "'" around the arguments but didn't work.

Answers (1)

Walter Roberson
Walter Roberson on 4 Apr 2025
Scripts do not accept any input parameters, so you must be using a misleadingly named function.
Try
matlab -nodisplay -nosplash -nojvm -nodesktop -r "myscript('.','dataset_name', 'False')"
  6 Comments
Walter Roberson
Walter Roberson on 7 Apr 2025
Create a script that contains
fiber_analysis_pipeline('.', 'RT05', 'False');
now
system("nohup matlab -nodisplay -nosplash -nojvm -nodesktop -r 'NameOfThatScript' 2>&1 &")

Sign in to comment.

Categories

Find more on Startup and Shutdown in Help Center and File Exchange

Products


Release

R2024a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!