MATLAB Answers

Displaying MATLAB output in linux terminal

61 views (last 30 days)

I am running a MATLAB script in the background using the command line:

nohup matlab -nodisplay < scriptname.m > /dev/null &

The script integrates an ODE with N sets of different initial conditions, i.e. it loops N times. It takes days to run so I would like to output the progress, say every 10% completion. I've written a simple if statement:

if mod(n_th_loop,complete_out) == 0
  fprintf('%2.2f %% complete', 100*n_th_loop/N);
end

When running the script inside MATLAB, the percentage completion is printed out as I intended. However, I cannot get anything to print out into the linux terminal when I run the script in the background. I have also tried using disp(...), but have exactly the same problem.

Is there any way to run a MATLAB script in the background, but print messages to the linux terminal?

Thanks, James

  0 Comments

Sign in to comment.

Accepted Answer

Kevin Claytor
Kevin Claytor on 25 Feb 2016
Pardon my *nix ignorance, but doesn't the & command spin off the process in a new terminal? If so it's probably dumping the messages there.
You could just start a screen session and flip back to it to check on the status.
When I was running on a cluster, I'd dump messages to a temporary file;
fid = fopen(sprintf('ODE_run%d.tmp', runnum));
fprintf(fid, 'msg');
fclose(fid);
and have it e-mail me when done.

  1 Comment

James Wright
James Wright on 25 Feb 2016
Your solution didn't quite solve my problem, but prompted me to try:
fid = fopen('PercentComplete.dat','w');
fprintf(fid,'%2.2f%%Complete', 100*n_th_loop/N);
fclose(fid)
Which does more or less what you described and works fine. Thanks.

Sign in to comment.

More Answers (0)

Sign in to answer this question.