Запуск Matlab в фоновом режиме - PullRequest
7 голосов
/ 08 июня 2010

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

Спасибо, Майк

Для пояснения, это порядок команд, которые не работают

ssh server

matlab -r matlab_command > outfile.txt &

jobs

[1] Остановлено

Чтобы исправить это I

fg

^ z

bg

logout

и теперь оно работает

Ответы [ 6 ]

18 голосов
/ 08 июня 2010

Используйте команду nohup в UNIX, чтобы предотвратить остановку MATLAB при выходе из системы.

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

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

ОБНОВЛЕНИЕ:

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

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

9 голосов
/ 09 июня 2010

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

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

2 голосов
/ 28 октября 2014

У меня были проблемы с экраном: 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.

2 голосов
/ 13 апреля 2013

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

matlab -r matlab_command > outfile.txt < /dev/null &
0 голосов
/ 19 ноября 2014

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

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

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

0 голосов
/ 28 августа 2014

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

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

Возможно, вам придется нажать Enter после выполнения этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...