8 Stimmen

Matlab im Hintergrund laufen lassen

Ich führe Matlab auf 48 virtuellen Maschinen aus und würde es gerne automatisieren. Ich logge mich per SSH in die Maschinen ein und verwende matlab -r matlab_command > outfile.txt & um den Prozess im Hintergrund laufen zu lassen und ihn nach dem Abmelden wieder in Gang zu setzen. Das einzige Problem ist, dass wenn ich jobs mein Prozess ist gestoppt und wird erst wieder gestartet, wenn ich fg ^z bg . Gibt es ein Matlab-Flag, damit ich es im Hintergrund laufen lassen kann, ohne dass es anhält?

Danke, Mike

Zur Verdeutlichung hier die Reihenfolge der Befehle, die nicht funktionieren

ssh server

matlab -r matlab_command > outfile.txt &

jobs

[1] Angehalten

Um dies zu beheben, habe ich

fg

^z

bg

logout

und es funktioniert jetzt

20voto

yuk Punkte 18683

Utilisez nohup Befehl unter UNIX, um zu verhindern, dass MATLAB beim Abmelden gestoppt wird.

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

Und vergessen Sie nicht, Folgendes hinzuzufügen exit; am Ende des Skripts matlab_command.

UPDATE:

Versuchen Sie diese Lösung: Ist es möglich, MATLAB unter UNIX im Hintergrund laufen zu lassen?

Es gibt eine Erklärung aquí .

10voto

ypnos Punkte 47895

Die wirklich saubere Lösung für Ihr Problem ist die Verwendung von GNU-Bildschirm . Dann geht die Matlab-Sitzung nicht verloren und Sie können jederzeit zum Matlab-Prompt zurückkehren. Das ist sehr hilfreich, wenn bei Ihrem Matlab-Code etwas schief gelaufen ist und Sie eine kleine Fehlersuche durchführen müssen.

Einfach anfeuern ' screen ' (nachdem Sie das Paket installiert haben, das in allen gängigen Distributionen enthalten ist). Sie erhalten eine typische Eingabeaufforderung, aber in einem persistenten, virtuellen Terminal. Starten Sie Ihr Matlab wie gewohnt, lassen Sie den Hintergrund aus. Dann drücken Sie CTRL+A, D (erst CTRL+A, dann d). Sie werden aus dem Bildschirm herauskommen. Sie können sich abmelden. Wenn Sie zu Ihrer Bildschirmsitzung zurückkehren wollen, führen Sie screen -r . Wenn Sie möchten, können Sie auch direkt starten screen matlab [...] an erster Stelle. Dies hat zur Folge, dass Ihre virtuelle Sitzung auch beim Beenden von Matlab beendet wird.

2voto

MRule Punkte 478

Ich verwende diesen Workaround, der einen Dummy-Standard in:

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

2voto

meteore Punkte 4357

Ich hatte Probleme mit screen: matlab startete, hatte aber keine Ahnung, was über stdin übergeben wurde. Es hat es einfach ignoriert.

Aber ich hatte Erfolg mit tmux . Hier ist die von mir verwendete Befehlszeile,

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

Sie können sich dann per ssh in den entfernten Rechner einwählen (hier durch das Präfix remote$ ) und überprüfen Sie die Dinge durch die Eingabe von remote$ tmux a -t matlab . Sie trennen die Verbindung zu Ihrem entfernten Host, indem Sie Ctrl-b d . Sie listen Sitzungen mit remote$ tmux ls (wie Bildschirm). Sie beenden die Sitzung von innen mit Ctrl-b & und von außen mit $remote tmux kill-session -t matlab .

Aber ich habe entdeckt, dass man sich auch direkt von seinem lokalen Rechner aus an seine tmux-Sitzung anschließen kann:

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

Beachten Sie, dass ich Folgendes verwenden musste -t hier anstelle von -f .

0voto

Tamaki Sakura Punkte 440

Wenn Sie eine Datei verwenden:

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

Möglicherweise müssen Sie nach der Ausführung die Eingabetaste drücken.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X