Zuletzt geändert von Aysegül Omus am 2025/01/31 12:25

Verstecke letzte Bearbeiter
Aysegül Omus 10.1 1 = =
wikibot 1.1 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
Yunhao Wu 9.1 15 * um sich mit der lxhalle per SSH zu verbinden muss die unten stehende Zeile mit Ihrem cit.tum-Login (Icit/ITO-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.
wikibot 1.1 16
Ana Villalobos González 8.1 17 {{code language="none"}}
Yunhao Wu 9.1 18 ssh ITO-Kennung@lxhalle.in.tum.de
Ana Villalobos González 8.1 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
wikibot 1.1 23 {{html wiki="true"}}
24 <hr />
25 {{/html}}
26
27
28 == 2. Beispielskript ==
29
Ana Villalobos González 8.1 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:
wikibot 1.1 31
Ana Villalobos González 8.1 32 {{code language="none"}}
33 #!/bin/bash while true do sleep 1 date done >> datum.txt
34 {{/code}}
35
wikibot 1.1 36 ----
37
Ana Villalobos González 8.1 38 {{id name="NohupAnchor"/}}
39
wikibot 1.1 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.
Ana Villalobos González 8.1 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
wikibot 1.1 47 * jetzt kann im Terminalfenster weiter gearbeitet werden - das Terminal kann natürlich auch geschlossen werden, ohne das das Programm beendet wird
Ana Villalobos González 8.1 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 * [[image:https://xwiki.rbg.tum.de/bin/download/Informatik/Helpdesk/ProgrammeBeimLogoutNichtBeenden/WebHome/nohupTest.png]]
51
wikibot 1.1 52 ----
53
54 == 4. screen ==
55
56 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.
57
58
59 Zunächst werden einige grundlegenden Steuerungsbefehle vorgestellt:
Ana Villalobos González 8.1 60
61 * screen starten:
62 ** {{{}}}{{code language="none"}}nice -n 19 screen {{/code}}
63 ** eine selbstbenannte Sitzung (hier sitzung1) durch folgende Befehlseingabe
64 ** {{code language="none"}}nice -n 19 screen -S sitzung1{{/code}}
65
wikibot 1.1 66 * 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
Ana Villalobos González 8.1 67
68 * eine weitere virtuelle Konsole starten
wikibot 1.1 69 ** ##Strg## + ##A## und dann ##C##
Ana Villalobos González 8.1 70
71 * eine virtuelle Konsole schließen
wikibot 1.1 72 ** ##Strg## + ##A## und dann ##K##
Ana Villalobos González 8.1 73 * zwischen den virtuellen Konsolen wechseln:
wikibot 1.1 74 ** ##Strg## + ##A## und dann ##Leertaste##
75 ** ##Strg## + ##A## und dann Zahl zw. 0 und 9 (für die entsprechende Konsole)
Ana Villalobos González 8.1 76 * Verbindung zur aktuellen Sitzung lösen (deattach):
wikibot 1.1 77 ** ##Strg## + ##A## und dann ##D##
Ana Villalobos González 8.1 78 ** für eine bestimmte Sitzung (hier sitzung1): {{code language="none"}}screen -d sitzung1{{/code}}
79
80 * Verbindung zu einer Sitzung wiederaufnehmen (hier sitzung1)
81 ** {{code language="none"}}screen -r sitzung1{{/code}}
82 * Sitzung beenden
wikibot 1.1 83 ** ##Strg## + ##D##
Ana Villalobos González 8.1 84 ** {{code language="none"}}exit{{/code}}
wikibot 1.1 85 ** die letzte virtuelle Konsole schließen
Ana Villalobos González 8.1 86 * alle laufenden Sitzungen mit ihren Namen anzeigen (im Bild z.B: 6561)
87 ** {{code language="none"}} screen -ls {{/code}}
88 **
89 ** [[image:https://xwiki.rbg.tum.de/bin/download/Informatik/Helpdesk/ProgrammeBeimLogoutNichtBeenden/WebHome/screen.jpg]]
90 * alle Tastaturbefehle anzeigen
wikibot 1.1 91 ** ##Strg## + ##A## und dann ##?## eingeben
Ana Villalobos González 8.1 92 * für die vollständige Dokumentation des screen-Befehls möchte ich auf die manpages verweisen:    {{code language="none"}}man screen{{/code}}
wikibot 1.1 93
Ana Villalobos González 8.1 94 Vorgehen bei Benutzung von screen (Befehle siehe oben):
wikibot 1.1 95
Ana Villalobos González 8.1 96 * Programme starten
wikibot 1.1 97 ** Terminalfenster aufrufen
Ana Villalobos González 8.1 98 ** screen starten - dadurch ist man automatisch in einer Sitzung, die "Attached" ist
wikibot 1.1 99 ** Programm ausführen
100 ** gegebenfals neue Konsolen und Programe starten
101 ** die Verbindung zur aktuellen Sitzung lösen
102 ** Terminalfenster schließen
Ana Villalobos González 8.1 103 * Programme beenden
wikibot 1.1 104 ** Terminalfenster aufrufen
Ana Villalobos González 8.1 105 * alle laufenden screen-Sitzungen anzeigen
wikibot 1.1 106 ** die gewünschen Sitzungen wiederaufnehmen
107 ** die Programme in den Virtuellen Konsolen beenden (falls sie nicht von selbst terminieren)
108 ** die virtuellen Konsolen schließen bzw. die Sitzung beenden
109 ** Terminalfenster schließen
110
111 {{html wiki="true"}}
112 <hr />
113 {{/html}}