SSH-Hintergrundaufgabe / -jobs fortsetzen, wenn SSH geschlossen wird oder wenn die Verbindung zur Shell getrennt wird

0

Ich verwende ein MPI-Programm mit einer sicheren SSH-Shell. Aufgrund der Wi-Fi-Unterbrechung verliert mein la [top] die Verbindung zum Server und verursacht einen Fehler beim Ausführen des Prozesses auf dem Server.

Wie in den oben genannten Lösungsvorschlägen habe ich versucht, den Befehl "screen -dmSL" zu verwenden, um den "Workstuff" mit einem anderen Namen zu definieren und dann den Befehl (der in der Form "./mpirun ......") steht Ich habe gegeben, um den Prozess auszuführen.

Im Terminal (in OpenSuse Linux-Umgebung) habe ich den Prozess mit "Strg-z" angehalten. Es hat gut funktioniert. Aber als ich die SSH-Shell nach einer Stunde neu gestartet hatte, um entweder den Vorgang abzuschließen oder nicht, und den Befehl "screen -x" .... "(Workstuff-Name) einzugeben. Ich erhielt die Meldung" Es ist kein Bildschirm vorhanden, dem ein Abgleich zugeordnet werden soll "..." (Workstuff-Name).

Ich habe den Vorgang nach dem Eintragen in Unterordner ausgeführt. Also habe ich es auch so versucht. Aber nichts ist passiert.

Wurde mir beim Befehl etwas entgangen? Plz bietet die Lösung.

Ich danke Ihnen im Voraus.

Vishal
quelle

Antworten:

0

Müssen Sie die Bildschirmausgabe sehen? Wenn nicht, führen Sie den Prozess einfach mit einem kaufmännischen Und-Zeichen (& amp;) am Ende aus:

./my_process&

Wenn du tun Benötigen Sie die Ausgabe, dann können Sie stdout in den meisten Fällen in eine Datei wie folgt weiterleiten:

./my_process > output.txt&
Lattis
quelle
Hallo. Die vorgeschlagenen Lösungen haben funktioniert. Das Einzige, was ich nicht verstehen kann, ist, wenn ich zurückkehre, um den laufenden Prozess zu überprüfen, derselbe Befehl erneut gegeben werden sollte oder der Server nur unter zuvor definierten Bedingungen arbeitet, d. Und wenn ich die SSH-Shell einfach nicht schließen möchte, dann braucht sie einen anderen Befehl?
Vishal
1

Sehen Sie sich die Optionen -r / -R und -d / -D auf der Manpage an screen . Laufen screen -D -RR -x ... (workstuff) funktioniert für mich, wenn ein getrennter Bildschirm mich nicht wieder anbringen lässt.

milli
quelle
0

Hast du versucht nohup

nohup ./myprogram & gt; foo.out 2 & gt; foo.err & lt; / dev / null & amp;

Ken
quelle
Ich bin mir bei Nohup nicht sicher. Ich habe aber die vorherigen Kommentare zu "nohup" geprüft. Dort fand ich die ausgefeilteste Lösung "Bildschirm". Meinen Sie also, dass "nohup" eine bessere Option für mein spezielles Problem ist oder eine allgemeine Lösung für alle ähnlichen Fragen? Es ist auch nicht aus der obigen Lösung ersichtlich, wie ich aus der SSH-Shell (durch einen weiteren Befehl oder durch das Verlassen des SSH) herauskommen könnte und wie ich zur Verarbeitung zurückkehren kann.
Vishal