Version 8.1 von Ana Villalobos González am 2023/03/01 12:31

Zeige letzte Bearbeiter
1 = Programme so ausführen, dass sie beim Logout nicht beendet werden =
2
3 Hier wird beschrieben, wie man in der Rechnerhalle Programme ausführen kann, die nach dem Logout weiterlaufen. Dies geschieht indem diese auf einem Server gestartet werden, welcher identisch zu den Rechnern in der Halle konfiguriert ist.
4
5
6
7 {{toc/}}
8
9
10
11 == 1. Allgemeines ==
12
13 Möchte man im Rahmen seines Studiums mal ein rechenintensives Program beispielsweise über die Nacht laufen lassen, so ist es grundsätzlich problemlos möglich, sofern man die folgenden Punkte beachtet:
14
15 * um sich mit der lxhalle per SSH zu verbinden muss die unten stehende Zeile mit Ihrem in.tum-Login (Informatik/RBG-Login) ins Terminalfenster eingegeben werden - Windows Benutzer finden [[hier>>https://xwiki.rbg.tum.de/bin/view/Informatik/Helpdesk/Ssh_mit_PuTTY]] ein HowTo, um sich das Programm PuTTY einzurichten, mit dem ssh Verbindungen per Terminalfenster möglich werden.
16
17 {{code language="none"}}
18 ssh RBG-Kennung@lxhalle.in.tum.de
19 {{/code}}
20
21 * damit die Programme die Arbeit anderer Rechnerbenutzer nicht behindern, sollten sie mit einer niedrigen scheduling-Priorität gestartet werden - dies wird durch den Aufruf von "nice -n 19", wie bei den Beispielen in diesem HowTo erreicht
22
23 {{html wiki="true"}}
24 <hr />
25 {{/html}}
26
27
28 == 2. Beispielskript ==
29
30 Um die Funktionalität der hier Vorgestellten Methoden zu demonstrieren, wurde ein kleines Shell-Skript {{code language="none"}}test.sh{{/code}} geschrieben, welches nichts anderes tut, als jede Sekunde die aktuelle Uhrzeit + Datum in die Datei {{code language="none"}}datum.txt{{/code}} zu schreiben. Dieses Skript symbolisiert ein beliebiges Programm, welches auf der Konsole laufen könnte. Das Skript besteht aus folgenden Zeilen:
31
32 {{code language="none"}}
33 #!/bin/bash while true do sleep 1 date done >> datum.txt
34 {{/code}}
35
36 ----
37
38 {{id name="NohupAnchor"/}}
39
40 == 3. nohup ==
41
42 Wird ein Programm mit dem nohup Befehl gestartet, so ignoriert es dann das HUP-Signal, welches beim Ausloggen gesendet wird. Dadurch läuft das Programm weiter, auch wenn sich der Benutzer, der es gestartet hat, bereits ausgeloggt hat.
43
44 * durch die Eingabe von {{code language="none"}}nice -n 19 nohup ./test.sh & {{/code}}wird das Test-Skript gestartet und von der Konsole entbunden (durch ##&##)
45 * ab jetzt wird das Datum in die Datei {{code language="none"}}datum.txt{{/code}} geschrieben, auch nachdem man sich ausgeloggt hat
46 * nach dem Ausführen von {{code language="none"}}nohup{{/code}} wird uns zusätzlich die PID des erzeugten Prozesses mitgeteilt, was nützlich sein kann, um das Programm (falls es nicht von alleine terminiert) mit der {{code language="none"}}kill PID{{/code}} Anweisung zu beenden
47 * jetzt kann im Terminalfenster weiter gearbeitet werden - das Terminal kann natürlich auch geschlossen werden, ohne das das Programm beendet wird
48 * loggt man sich aus und wieder ein, kann man überprüfen, ob in die Datei {{code language="none"}}datum.txt{{/code}} weiterhin geschrieben wird
49
50
51 * [[image:https://xwiki.rbg.tum.de/bin/download/Informatik/Helpdesk/ProgrammeBeimLogoutNichtBeenden/WebHome/nohupTest.png]]
52
53 ----
54
55 == 4. screen ==
56
57 Der screen-Befehl ermöglicht es, im Terminalfenster mehrere screen-Sitzungen zu erstellen, die wiederum mehrere (bis 10) virtuelle Konsolen enthalten können. In diesen Konsolen können Programme gestartet werden, welche, nachdem man die Sitzung vom Terminalfenster löst, auch nach dem Logout erhalten bleiben.
58
59
60 Zunächst werden einige grundlegenden Steuerungsbefehle vorgestellt:
61
62 * screen starten:
63 ** {{{}}}{{code language="none"}}nice -n 19 screen {{/code}}
64 ** eine selbstbenannte Sitzung (hier sitzung1) durch folgende Befehlseingabe
65 ** {{code language="none"}}nice -n 19 screen -S sitzung1{{/code}}
66
67
68 * es werden zwar am Anfang einige Informationen über das Programm angezeigt, nachdem man jedoch die Leertaste betätigt schaut die Konsole unverändert aus - man hat nun eine screen-Sitzung gestartet und befindet sich in der ersten virtuellen Konsole
69
70
71 * eine weitere virtuelle Konsole starten
72 ** ##Strg## + ##A## und dann ##C##
73
74 * eine virtuelle Konsole schließen
75 ** ##Strg## + ##A## und dann ##K##
76 * zwischen den virtuellen Konsolen wechseln:
77 ** ##Strg## + ##A## und dann ##Leertaste##
78 ** ##Strg## + ##A## und dann Zahl zw. 0 und 9 (für die entsprechende Konsole)
79 * Verbindung zur aktuellen Sitzung lösen (deattach):
80 ** ##Strg## + ##A## und dann ##D##
81 ** für eine bestimmte Sitzung (hier sitzung1): {{code language="none"}}screen -d sitzung1{{/code}}
82
83
84 * Verbindung zu einer Sitzung wiederaufnehmen (hier sitzung1)
85 ** {{code language="none"}}screen -r sitzung1{{/code}}
86 * Sitzung beenden
87 ** ##Strg## + ##D##
88 ** {{code language="none"}}exit{{/code}}
89 ** die letzte virtuelle Konsole schließen
90 * alle laufenden Sitzungen mit ihren Namen anzeigen (im Bild z.B: 6561)
91 ** {{code language="none"}} screen -ls {{/code}}
92 **
93 ** [[image:https://xwiki.rbg.tum.de/bin/download/Informatik/Helpdesk/ProgrammeBeimLogoutNichtBeenden/WebHome/screen.jpg]]
94 * alle Tastaturbefehle anzeigen
95 ** ##Strg## + ##A## und dann ##?## eingeben
96 * für die vollständige Dokumentation des screen-Befehls möchte ich auf die manpages verweisen:    {{code language="none"}}man screen{{/code}}
97
98 Vorgehen bei Benutzung von screen (Befehle siehe oben):
99
100 * Programme starten
101 ** Terminalfenster aufrufen
102 ** screen starten - dadurch ist man automatisch in einer Sitzung, die "Attached" ist
103 ** Programm ausführen
104 ** gegebenfals neue Konsolen und Programe starten
105 ** die Verbindung zur aktuellen Sitzung lösen
106 ** Terminalfenster schließen
107 * Programme beenden
108 ** Terminalfenster aufrufen
109 * alle laufenden screen-Sitzungen anzeigen
110 ** die gewünschen Sitzungen wiederaufnehmen
111 ** die Programme in den Virtuellen Konsolen beenden (falls sie nicht von selbst terminieren)
112 ** die virtuellen Konsolen schließen bzw. die Sitzung beenden
113 ** Terminalfenster schließen
114
115 {{html wiki="true"}}
116 <hr />
117 {{/html}}