evilmoe
Goto Top

Screen ist terminating Systemstart

Guten Morgen,

ich habe ein Problem mit "screen". Beim Systemstart soll ein python Scriptim Hintergrund laufen, ich möchte aber auch Zugriff auf die Ausgabe haben. Also möchte ich dafür screen benutzen. Das Problem ist aber das sich screen nach wenigen Minuten immer selbst beendet. Das einzige was ich sehe ist "screen is terminating".

Wie kann ich raus finden warum sich screen beendet?


Ich habe diese Phänomen übrigens auf 3 Debian Installationen, Squeeze, Wheezy, Testing. Auf allen das selbe.

Meine Aufruf ist ganz Simpel
#/etc/init.d/name
screen -S name /home/xxx/blabla.sh


Nun etwas merkwürdiges, wenn ich es auf der Konsole selbst mache bekomme ich das gleiche Problem. Wenn ich aber das so mache:
screen
#2x muss ich bestätigen

# befehle in screen eingeben
/home/xxx/blabla.sh

#Detach 
Funktioniert es, das Problem liegt wohl darin das ich den Befehl direkt übergebe.


Weiß jemand rat?


Sven

Content-ID: 188747

Url: https://administrator.de/contentid/188747

Ausgedruckt am: 24.11.2024 um 17:11 Uhr

Lochkartenstanzer
Lochkartenstanzer 28.07.2012 aktualisiert um 11:12:05 Uhr
Goto Top
Moin,

"man screen" ist ein guter Ansatzpunkt. face-smile

Insbesondere die folgenden Optionen sollten weiterhelfen:

       -m   causes screen  to  ignore  the  $STY  environment  variable.  With
            "screen  -m"  creation  of  a  new session is enforced, regardless
            whether screen is called from within  another  screen  session  or
            not.  This  flag has a special meaning in connection with the `-d'
            option:

       -d -m   Start screen in "detached" mode. This creates a new session but
               doesn't  attach  to  it.  This  is  useful  for  system startup
               scripts.

       -D -m   This also starts screen in "detached" mode, but doesn't fork  a
               new process. The command exits if the session terminates.

lks


Nachtrag: Wird heute einem heutzutage nicht mehr beigebracht, die Spezifikation/Anleitung zu lesen?
EvilMoe
EvilMoe 28.07.2012 aktualisiert um 11:19:37 Uhr
Goto Top
Eben probiert. Leider das selbe Problem, hate sich eben wieder beendet.
habe es nun so versucht:
screen -S browsershots -d -m "/home/dfdfd.sh"  

EDIT: Ich habe "screen --help" sehr wohl gelesen, leider kam ich damit nicht zum Erfolg.
dog
dog 28.07.2012 um 14:27:27 Uhr
Goto Top
Screen wird beendet, weil das ausgeführte Programm beendet wird.

Bei der zweiten Variante wird lediglich eine Shell gestartet, die auch weiter läuft wenn das Programm beendet ist.
EvilMoe
EvilMoe 28.07.2012 um 14:29:51 Uhr
Goto Top
Das Programm wird nicht beendet, dies läuft in einer Endlosschleife in python.
Es funktioniert ja wenn ich es einzeln eingebe, aber das in einem Befehl will nicht klappen.
Lochkartenstanzer
Lochkartenstanzer 28.07.2012 um 15:46:20 Uhr
Goto Top
Moin,

also bei mir tut ein

sudo screen -S dummyscreen -d -m /home/lks/bin/screen-dummy.sh 

bzw ein
sudo /etc/init.d/dummyscreen 

mit der obigen screenzeile als Inhalt von /etc/init.d/dummyscreen das was es soll.

Vielleicht ist Dein Phytonscripot kaputt?

Mach mal ein einfaches bash-skript zum testen. Bei mir steht da nur
#!/bin/bash

echo "screen-dummy"
als Inhalt des screen-dummy.sh-Skriptes.

lks
EvilMoe
EvilMoe 28.07.2012 um 15:48:57 Uhr
Goto Top
Glaube nicht das es am python liegt, denn in Einzelschritten funktioniert es ja.
Das Script läuft ja auch eine weile, auch deins würde ohne Probleme funktionieren. Aber nach einiger Zeit wird es dann einfach geschlossen.
Lochkartenstanzer
Lochkartenstanzer 28.07.2012 um 16:21:02 Uhr
Goto Top
Also ich habe mal in mein skript eine endlosschleife eingebaut


while true; do echo "screen-dummy" ; sleep 1 ; done;
<end>

und es tut immer noch. Mindestens 5 bis 10 Minuten lang.

Ich tippe mal, da ist irgendetwas, daß dein skript beendet.

lks

PS. von welchem OS reden wir überhaupt, welche Distribution und welche screen-version. Ich habe precise pangolin mit Screen version 4.00.03jw4 (FAU) 2-May-06.
Lochkartenstanzer
Lochkartenstanzer 29.07.2012 um 11:58:13 Uhr
Goto Top
Nachtrag: Heute mittag (29.7.2012) läuft mein Testskript immer noch. Ich tippe mal drauf, daß Dein Skript irgendeine eigenschaft hat, daß es beim starten aus /etc/init.d sich anders verhält, als wenn man es direkt aufruft. Ich würde Dir einfach empfehlen, es mal zuerst mit einem Testskript ähnlich meinem zu versuchen und wenn screen damit läuft, dann dein PHP-Skript zu debuggen.

lks
EvilMoe
EvilMoe 31.07.2012 um 10:46:42 Uhr
Goto Top
Ich habe eine Vermutung. Die VServer haben "nur" 2GB Ram und kein SWAP da OpenVZ. Da die Anwendungen schon Ram lastig sind vermute ich das es das Problem sein könnte.

Der Support teilte mir folgendes mit: "There is no swap enabled on VPS's. You would need to use FUSE or other means to get swap."
Leider finde ich für SWAP mit FUSE nichts. Welche Methoden gibt es denn noch dafür? Swapon ist nicht möglich.
Lochkartenstanzer
Lochkartenstanzer 31.07.2012 um 10:56:34 Uhr
Goto Top
Einfach eine Datei dafür nehmen:

dd if=/dev/zero of=/var/swapfile bs=1M count=2048  # 2 GB Datei erzeugen.
mkswap -L evilmoes-swap /var/swapfile # als swap initialisieren
swapon /var/swapfile # swap aktivieren
# und nun noch in fstab eintragen
echo >>/etc/fstab
echo "# swapdatei von evilmoe" >>/etc/fstab
echo "/var/swapfile none            swap    sw              0       0" >>/etc/fstab

Fertich.


lks
EvilMoe
EvilMoe 31.07.2012 aktualisiert um 10:58:43 Uhr
Goto Top
Das ist mir schon klar, ich kann aber kein SWAP file nehmen. "swapon" geht nicht bzw. ist nicht erlaubt.
Lochkartenstanzer
Lochkartenstanzer 31.07.2012 um 11:05:07 Uhr
Goto Top
Zitat von @EvilMoe:
"swapon" geht nicht bzw. ist nicht erlaubt.

Ok "swapon geht nicht" habeich andrs verstanden. Daher mein Vorschlag.

Da hilft nur Geld in die Hand zu nehmen und sich einen ordentlichen Server zu leisten.

lks
EvilMoe
EvilMoe 31.07.2012 um 11:08:03 Uhr
Goto Top
Siehe Antwort vom Support: "There is no swap enabled on VPS's. You would need to use FUSE or other means to get swap."
Es muss also schon möglich sein, nur konnte ich unter FUSE und SWAP nicht wirklich etwas finden. Es müsste wohl noch andere Möglichkeiten geben.
EvilMoe
EvilMoe 07.08.2012 um 21:48:23 Uhr
Goto Top
Das Problem scheint wohl auch nicht der volle RAM zu sein.
Ich habe mal genau beobachtet, wenn SCREEN sich beendet ist der RAM nicht ansatzweise voll gewesen.
EvilMoe
EvilMoe 03.09.2012 um 20:55:09 Uhr
Goto Top
Ich weiß nun woran es liegt, wer hätte es gedacht aber ich brauche da ne Lösung für^^.

Ich starte in screen ein Bash Script. Dieses wiederum ruft meine Python Scripte in einer Schleife auf. Nach der Schleife, also nach beenden der Bash beendet sich screen immer. Ich möchte aber den output der Python Scripte haben.

Ich könnte natürlich in der Bash eine Endlosschleife einbauen, ist das optimal?
Vielleicht hat ja jemand eine bessere Idee.


Sven