session aktiv halten
-
- Beiträge: 21
- Registriert: 15.10.2015 15:03:02
session aktiv halten
Hi,
ich habe meine Frage bereits hier gestellt:
https://www.digitalocean.com/community/ ... ve-session
Aber da seit 2 Tagen keine weitere Antwort kommt und weil die Frage ja eher auf Debian, als auf Server abzielt, stelle ich sie nochmal hier.
Ich verzichte mal auf das copy pasten des Textes aus dem verlinkten Link, bitte die Infos dort lesen, wenn genauere infos gebraucht werden.
Kurzzusammenfassung:
Ich habe ein Python script in einem Debian 8 System auf einem Server (ich glaube zumindest, dass man digitalocean Server nennt, oder?). Nun möchte ich vom PC aus das skript starten (es läuft durch eine "while true" schleife unendlich lang), sodass es auch weiterläuft, wenn ich die Verbindung von PC zu Server trenne.
Dazu wurde mir im obigen Link empfohlen, das Skript als Service zu deklarieren, was soweit auch geklappt hat.
Ungeklärt sind die Fragen meiner letzten Antwort im Link:
1) Der Service mit meinem Skript greift direkt auf die root also "/" folder zu und schreibt auch dort hinein. Ich hätte aber gerne, dass dies in meinen Benutzer getan wird.
2) Ich möchte von Zeit zu Zeit mit dem PC zum Server verbinden und eine Live-Ansicht aller - print("hallo") - aus meinem Python skript sehen während es läuft. Dies ist wichtig, damit ich auf einen Blick sehen kann, ob noch alles so läuft, wie ich das möchte. Ich habe zwar auch eine txt logfile, welche ich mit WinScp einsehen kann, aber da diese recht groß wird, ist dies immer ein sehr umständlicher Weg, um zu sehen, ob noch alles läuft. Besser wäre es, live die prints zu sehen.
- nehme ich den Befehl "service myscript status" erhalte ich nur die letzten ~ 10 prints in gekürzter Form und auch nicht live.
Natürlich bin ich auch für alternativen zum "service" offen, wie es vllt besser klappt
Denn auf meinem Raspberry Pi mit Desktop Umgebung klappt es ja auch ohne solche Tricks, wenn ich z.b über remote desktop im terminal das skript starte... dann kann ich jederzeit remote deaktivieren und wieder aktiveren und sehe live die prints.
ich habe meine Frage bereits hier gestellt:
https://www.digitalocean.com/community/ ... ve-session
Aber da seit 2 Tagen keine weitere Antwort kommt und weil die Frage ja eher auf Debian, als auf Server abzielt, stelle ich sie nochmal hier.
Ich verzichte mal auf das copy pasten des Textes aus dem verlinkten Link, bitte die Infos dort lesen, wenn genauere infos gebraucht werden.
Kurzzusammenfassung:
Ich habe ein Python script in einem Debian 8 System auf einem Server (ich glaube zumindest, dass man digitalocean Server nennt, oder?). Nun möchte ich vom PC aus das skript starten (es läuft durch eine "while true" schleife unendlich lang), sodass es auch weiterläuft, wenn ich die Verbindung von PC zu Server trenne.
Dazu wurde mir im obigen Link empfohlen, das Skript als Service zu deklarieren, was soweit auch geklappt hat.
Ungeklärt sind die Fragen meiner letzten Antwort im Link:
1) Der Service mit meinem Skript greift direkt auf die root also "/" folder zu und schreibt auch dort hinein. Ich hätte aber gerne, dass dies in meinen Benutzer getan wird.
2) Ich möchte von Zeit zu Zeit mit dem PC zum Server verbinden und eine Live-Ansicht aller - print("hallo") - aus meinem Python skript sehen während es läuft. Dies ist wichtig, damit ich auf einen Blick sehen kann, ob noch alles so läuft, wie ich das möchte. Ich habe zwar auch eine txt logfile, welche ich mit WinScp einsehen kann, aber da diese recht groß wird, ist dies immer ein sehr umständlicher Weg, um zu sehen, ob noch alles läuft. Besser wäre es, live die prints zu sehen.
- nehme ich den Befehl "service myscript status" erhalte ich nur die letzten ~ 10 prints in gekürzter Form und auch nicht live.
Natürlich bin ich auch für alternativen zum "service" offen, wie es vllt besser klappt
Denn auf meinem Raspberry Pi mit Desktop Umgebung klappt es ja auch ohne solche Tricks, wenn ich z.b über remote desktop im terminal das skript starte... dann kann ich jederzeit remote deaktivieren und wieder aktiveren und sehe live die prints.
Re: session aktiv halten
Statt des Service das Ding in einer screen-Session laufen lassen?
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-
- Beiträge: 21
- Registriert: 15.10.2015 15:03:02
Re: session aktiv halten
Klingt soweit nicht schlecht: http://www.netcup-wiki.de/wiki/Screenrendegast hat geschrieben:Statt des Service das Ding in einer screen-Session laufen lassen?
Wie starte ich damit ein python Skript? Angenommen es liegt noch im / Ordner, also direkt im obersten Ordner. Es passiert folgendes:
root@MeinServer:~# screen -AmS test ./test.py
No such file in directory
root@MeinServer:~# screen -AmS test /test.py
Permission denied
root@MeinServer:~# sudo screen -AmS test /test.py
Permission denied
Und läuft das ganze sicher auch weiter, wenn ich die komplette Putty Sitzung beende? Denn im Link steht, dass mit exit alle screen sitzungen beendet werden, also vllt auch beim einfachen schließen von putty?
- Patsche
- Beiträge: 3262
- Registriert: 21.06.2013 01:47:54
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: /home/10001101001
Re: session aktiv halten
Das würde mich auch interessieren. Ich starte über ssh ab und zu pyLoad. Wenn ich die Sitzung beende, wird der pyLoad-Server auch beendet. Das ist irgendwie doof so.Scholastik hat geschrieben:Und läuft das ganze sicher auch weiter, wenn ich die komplette Putty Sitzung beende?
Re: session aktiv halten
Code: Alles auswählen
screen -S blafoo -d -m prog
Code: Alles auswählen
screen -ls
screen -d -r blafoo
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-
- Beiträge: 21
- Registriert: 15.10.2015 15:03:02
Re: session aktiv halten
könntest du noch ein zwei sätze dazu schreiben?
eingebe, sieht man nichts (weils im hintergrund gestartet wird). Lässt man -d also weg, kommen dieselben Fehlermeldungen wie oben schon erwähnt, ist ja auch nicht groß anders ^^
Also wie starte ich nun mit Python das Skript test.py ? Normal würde ich ja mit "Python test.py" starten, damit Python das skript ausführt.
Oder steht -r für "re-attach" und -d hier für "detach" ?
edit:
alternativ wäre natürlich auch eine gute Anleitung zu Screen schön googeln hilft gerade nur mäßig viel. Habe ja bereits einen Link gepostet, aber da steht zu diesem Thema nichts drin soweit ich sehen kann. Und andere Seiten, die ich so finde, wie zb diese hier: http://www.tecmint.com/screen-command-e ... terminals/ behandeln zwar detach usw., was möglicherweise die Lösung wäre, aber da steht weder, wie ich nun das Python skript starte, noch wie ich das detach ohne eine Tastenkombination mache (allgemein steht in dem link viel zuviel mit tastenkombinationen, das muss ja auch ohne Tasten-Kombinationen gehen
wenn ichrendegast hat geschrieben:Code: Alles auswählen
screen -S blafoo -d -m prog
Code: Alles auswählen
screen -S test -d -m /test.py
Also wie starte ich nun mit Python das Skript test.py ? Normal würde ich ja mit "Python test.py" starten, damit Python das skript ausführt.
das konnte ich ja bisher noch nicht ausprobieren. -ls zeigt mir aber ja die vorhandenen "sockets", also offenen screens an. Und was macht -r ? steht das für remote ? Oder für reboot? Und das sorgt dann dafür, dass ich putty abschalten kann, das programm aber weiter läuft?rendegast hat geschrieben: ssh beenden/neu oder einen remote-xterm:Code: Alles auswählen
screen -ls screen -d -r blafoo
Oder steht -r für "re-attach" und -d hier für "detach" ?
edit:
alternativ wäre natürlich auch eine gute Anleitung zu Screen schön googeln hilft gerade nur mäßig viel. Habe ja bereits einen Link gepostet, aber da steht zu diesem Thema nichts drin soweit ich sehen kann. Und andere Seiten, die ich so finde, wie zb diese hier: http://www.tecmint.com/screen-command-e ... terminals/ behandeln zwar detach usw., was möglicherweise die Lösung wäre, aber da steht weder, wie ich nun das Python skript starte, noch wie ich das detach ohne eine Tastenkombination mache (allgemein steht in dem link viel zuviel mit tastenkombinationen, das muss ja auch ohne Tasten-Kombinationen gehen
Re: session aktiv halten
Im 'man screen' wird von '-d [-m|-r]' gesprochen.
Als Testprozeß habe ich 'watch echo $(date)' genommen.
Skripte benötigen vielleicht besondere Voraussetzungen,
wie das schon erwähnte Starten per Interpreter.
In einer neuen ssh-Session kann ich mit 'top' den Prozeß laufen sehen,
mit '-d -r' wieder "hervorholen".
Als Testprozeß habe ich 'watch echo $(date)' genommen.
Skripte benötigen vielleicht besondere Voraussetzungen,
wie das schon erwähnte Starten per Interpreter.
Das '-d -m' läßt den Testprozeß im detached-screen laufen.Scholastik hat geschrieben: Und das sorgt dann dafür, dass ich putty abschalten kann, das programm aber weiter läuft?
In einer neuen ssh-Session kann ich mit 'top' den Prozeß laufen sehen,
mit '-d -r' wieder "hervorholen".
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: session aktiv halten
Man kann screen ohne Zusatzparameter starten, dann bekommt man eine einfache Shell, die nach dem Detach weiterläuft. Man kann hier jeden beliebigen GUI-losen Prozeß starten.Scholastik hat geschrieben:könntest du noch ein zwei sätze dazu schreiben?
Mit Strg-A Strg-D kann man screen verlassen, sich ausloggen und putty beenden. Weitere Hotkeys sind in den Manpages beschrieben.
Wenn man sich erneut einlogt und dann screen -r aufruft, ist man wieder in seiner laufenden Anwendung.
-
- Beiträge: 21
- Registriert: 15.10.2015 15:03:02
Re: session aktiv halten
okay, danke...
fehlt nur noch python...
rumgooglen hat mir folgendes gebracht, wenn auch nicht ganz das was ich suche:
http://unix.stackexchange.com/questions ... ot-in-path
aber daraus hab ich mal: probiert. Es wird dadurch tatsächlich ein neuer screen geöffnet. Dummerweise wird das Skript aber nicht ausgeführt...
(habe ein paar prints in dauerschleife eingebaut und zusätzlich dass eine paar zahlen in eine txt datei gespeichert werden sollen. Aber es kommen weder prints, noch wird die txt datei erstellt. Beim normalen Aufruf von "Python /test.py" klappt es, auch - screen -t "python /test.py" - macht keinen unterschied.)
edit:
soo... habe nun einfach den workaround gemacht, dass ich einfach mit "screen" einen screen aufrufe und in diesem dann direkt "python /test.py" eintippe. Das sollte denke ich funktionieren.Obwohl das script im "/" ordner ist, wird die txt. Datei nun im "/root" ordner erstellt. Wenn mans weiß, ist das okay.
Jetzt hab ich nur noch Probleme die Python betreffen... z.b dass, wenn ich ein python skript hier aufrufe, dass dann keine ä,ö,ü usw im skript erlaubt sind, bzw. man daher "# coding: utf8" in die erste oder zweite Zeile des Skripts schreiben muss, damits geht.... Zusätzlich gibt es das Problem, dass ich ein Modul über eine setup.py Datei installiert habe, das Modul nun aber nicht gefunden wird... (im service und sonst funktioniert es wie die ö,ü,ä. Aber hier im terminal klappts nicht...
Also was muss ich noch ändern, damit das Modul gefunden wird ?
fehlt nur noch python...
rumgooglen hat mir folgendes gebracht, wenn auch nicht ganz das was ich suche:
http://unix.stackexchange.com/questions ... ot-in-path
aber daraus hab ich mal:
Code: Alles auswählen
screen -t "python test.py"
(habe ein paar prints in dauerschleife eingebaut und zusätzlich dass eine paar zahlen in eine txt datei gespeichert werden sollen. Aber es kommen weder prints, noch wird die txt datei erstellt. Beim normalen Aufruf von "Python /test.py" klappt es, auch - screen -t "python /test.py" - macht keinen unterschied.)
edit:
soo... habe nun einfach den workaround gemacht, dass ich einfach mit "screen" einen screen aufrufe und in diesem dann direkt "python /test.py" eintippe. Das sollte denke ich funktionieren.Obwohl das script im "/" ordner ist, wird die txt. Datei nun im "/root" ordner erstellt. Wenn mans weiß, ist das okay.
Jetzt hab ich nur noch Probleme die Python betreffen... z.b dass, wenn ich ein python skript hier aufrufe, dass dann keine ä,ö,ü usw im skript erlaubt sind, bzw. man daher "# coding: utf8" in die erste oder zweite Zeile des Skripts schreiben muss, damits geht.... Zusätzlich gibt es das Problem, dass ich ein Modul über eine setup.py Datei installiert habe, das Modul nun aber nicht gefunden wird... (im service und sonst funktioniert es wie die ö,ü,ä. Aber hier im terminal klappts nicht...
Also was muss ich noch ändern, damit das Modul gefunden wird ?