How to run Matlab script with parameters using "nohup" to run in background, detached from the terminal (Redhat)
10 views (last 30 days)
Show older comments
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
- Run this as a single command in Linux terminal itself
- 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.
0 Comments
Answers (1)
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
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 &")
See Also
Categories
Find more on Startup and Shutdown in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!