Запуск matlab в фоновом режиме

я запускаю matlab на 48 виртуальных машинах и хотел бы автоматизировать его. Я ssh в машины затем использовать matlab -r matlab_command > outfile.txt & чтобы заставить процесс работать в фоновом режиме и работать нормально, когда я выхожу из системы. Единственная проблема в том, что когда я jobs мой процесс остановлен и не начнется, пока я fg ^z bg. Есть ли флаг matlab, чтобы я мог запускать его в фоновом режиме без остановки?

спасибо, Майк!--11-->

для уточнения это порядок команд это не работает

ssh server

matlab -r matlab_command > outfile.txt &

jobs

[1] остановил

чтобы исправить это я

fg

^z

bg

logout

и

6 ответов


использовать nohup команда в UNIX для предотвращения остановки MATLAB при выходе из системы.

nohup matlab -nodisplay -nosplash -r matlab_command > outfile.txt &

и не забудьте включить exit; в конце сценария matlab_command.

обновление:

попробуйте это решение: можно ли запустить MATLAB в фоновом режиме под UNIX?

имеется объяснение здесь.


реальное чистое решение вашей проблемы-использовать экран GNU. Тогда вы не потеряете сеанс Matlab, и вы всегда можете вернуться в приглашение Matlab. Очень полезно, если кто-то ошибся с вашим кодом Matlab, и вам нужно немного отладить.

просто запустите 'screen' (после установки пакета, включенного во все основные дистрибутивы). У вас будет типичное приглашение, но внутри постоянного виртуального терминала. Запустите matlab как обычно, опустить любую информацию. Затем нажмите CTRL+A, D (сначала CTRL+A, затем d). Вы будете вне экрана. Вы можете выйти из системы. Если вы хотите вернуться к сеансу экрана, запустите screen -r. Если вы хотите, вы также можете напрямую запустить screen matlab [...] в первую очередь. Это будет иметь эффект, что ваш виртуальный сеанс также удаляется, когда matlab завершает работу.


у меня были проблемы с экраном: matlab начал, но понятия не имел, что было передано через stdin. Он просто игнорировал его.

но мне удалось с tmux. Вот командная строка, которую я использовал,

local$ ssh -f me@remote 'tmux new-session -d -s matlab "matlab -nojvm -nodesktop -nodisplay -nosplash </path/to/myscript.m"'

вы можете затем ssh в удаленный хост (указанный здесь префиксом remote$) и проверить вещи, выдав remote$ tmux a -t matlab. Вы отсоединяетесь к удаленному хосту, нажав Ctrl-b d. Вы перечисляете сеансы с remote$ tmux ls (как экран). Вы убиваете сеанс изнутри с Ctrl-b & и перед $remote tmux kill-session -t matlab.

но я обнаружил, что вы также можете подключиться к сеансу tmux с вашего локального хоста напрямую:

local$ ssh -t me@remote 'tmux a -t matlab'

обратите внимание, что я должен был использовать -t здесь вместо -f.


Я использую этот обходной путь, который предоставляет фиктивный стандарт в:

matlab -r matlab_command > outfile.txt < /dev/null &

Если вы используете файл:

nohup matlab -nodesktop -nodisplay < file.m > result.txt &

после выполнения этого может потребоваться нажать enter.


Я нашел полезную ссылку советы для выполнения больших вычислений и nohup

nohup nice matlab -nodisplay -nosplash <matlab_command.m > outfile.txt > 2>dev/null &

возможно, это может решить вашу проблему.