フィルターのクリア

Displaying MATLAB output in linux terminal

27 ビュー (過去 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 Center および File ExchangeStartup and Shutdown についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by