Запуск 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 &
возможно, это может решить вашу проблему.