Displaying MATLAB output in linux terminal

조회 수: 17 (최근 30일)
James Wright
James Wright 2016년 2월 25일
댓글: James Wright 2016년 2월 25일

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

채택된 답변

Kevin Claytor
Kevin Claytor 2016년 2월 25일
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
James Wright
James Wright 2016년 2월 25일
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.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Debugging and Analysis에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by