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-Key: 188747

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

Printed on: April 26, 2024 at 21:04 o'clock

Member: Lochkartenstanzer
Lochkartenstanzer Jul 28, 2012 updated at 09:12:05 (UTC)
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?
Member: EvilMoe
EvilMoe Jul 28, 2012 updated at 09:19:37 (UTC)
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.
Member: dog
dog Jul 28, 2012 at 12:27:27 (UTC)
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.
Member: EvilMoe
EvilMoe Jul 28, 2012 at 12:29:51 (UTC)
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.
Member: Lochkartenstanzer
Lochkartenstanzer Jul 28, 2012 at 13:46:20 (UTC)
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
Member: EvilMoe
EvilMoe Jul 28, 2012 at 13:48:57 (UTC)
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.
Member: Lochkartenstanzer
Lochkartenstanzer Jul 28, 2012 at 14:21:02 (UTC)
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.
Member: Lochkartenstanzer
Lochkartenstanzer Jul 29, 2012 at 09:58:13 (UTC)
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
Member: EvilMoe
EvilMoe Jul 31, 2012 at 08:46:42 (UTC)
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.
Member: Lochkartenstanzer
Lochkartenstanzer Jul 31, 2012 at 08:56:34 (UTC)
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
Member: EvilMoe
EvilMoe Jul 31, 2012 updated at 08:58:43 (UTC)
Goto Top
Das ist mir schon klar, ich kann aber kein SWAP file nehmen. "swapon" geht nicht bzw. ist nicht erlaubt.
Member: Lochkartenstanzer
Lochkartenstanzer Jul 31, 2012 at 09:05:07 (UTC)
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
Member: EvilMoe
EvilMoe Jul 31, 2012 at 09:08:03 (UTC)
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.
Member: EvilMoe
EvilMoe Aug 07, 2012 at 19:48:23 (UTC)
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.
Member: EvilMoe
EvilMoe Sep 03, 2012 at 18:55:09 (UTC)
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