Ich versuche, den GNU-Bildschirm zu zwingen, ein "virtuelles" Terminal zu erstellen, ohne es anzuhängen, ein Skript im Inneren auszuführen und die Sitzung NICHT zu beenden, sobald das Skript endet.
Ich habe viele Kombinationen ausprobiert, darunter:
screen -dmS udplistener /share/Sys/autorun/start_udp_listeners.sh
oder
screen -S udplistener -X /share/Sys/autorun/start_udp_listeners.sh
und keiner von ihnen arbeitete. Entweder erhalte ich eine Sitzung ohne ausgeführtes Skript, das Skript wird jedoch beendet, sobald die Sitzung beendet ist, oder es wird der Fehler "Keine Bildschirmsitzung gefunden" angezeigt.
Ich versuche im Grunde, den in PHP geschriebenen UDP-Listener auszuführen und ihn in einer Endlosschleife zum Laufen zu bringen (keine Unterbrechungen beim Hören). Ja - ich könnte &
am Ende PHP-Skript mit ausführen , wodurch PHP CLI gezwungen wird, als Daemon zu laufen. Das Problem ist, dass ich einen Müll namens Server verwende (QNAP - kaufe niemals diesen Müll!), Der das zu ignorieren scheint. Sobald ich mich von der SSH-Sitzung abmelde, werden die Skripte gestoppt.
So screen
scheint die einzige Möglichkeit zu sein. Aber ich kann nicht verstehen, warum es die Sitzung beendet, sobald der ausgeführte Befehl oder das Skript beendet ist.
EDIT : Ich habe auch versucht, Beispiel im Internet zu finden:
screen -dmS name
screen -S name -p windowname -X stuff 'mc
'
Kein Mangel! Nachdem screen -R name
ich es angehängt habe ( ), sehe ich, dass Midnight Commander NICHT hingerichtet wurde. Obwohl Beispielautor sagte, wird es sein.
screen
des Schließens? Übrigens: Ich verstehe die Idee immer noch nicht! Wenn ich anrufe screen -dmS name
, erstelle ich ein freistehendes Fenster, das auch nichts mehr zu tun hat. Es wird aber nicht automatisch geschlossen! Wenn ich jedoch etwas in diesem getrennten Bildschirm ausführen möchte, wird es beendet, sobald die Ausführung abgeschlossen ist. Warum? Ich sehe hier keine Logik. Kann es sein, dass Fenster nichts tut, aber kann es nicht sein, dass Fenster etwas tut und dann nichts tut?
&
am Ende), werden sie aufgrund des fehlerhaften Servers (QNAP) beendet, wenn die Sitzung endet (mir wurde gesagt, sie sollten nicht unter normalem Linux ausgeführt werden, wenn sie mit ausgeführt werden &
). Daher möchte ich nach start_udp_listeners.sh
Abschluss der Sitzung nichts weiter tun , als zu verhindern, dass die Sitzung beendet wird. Solange das nicht der Fall ist, funktionieren meine PHP-Listener einwandfrei.
screen
, erstellen Sie nur ein Fenster, um einen einzelnen Befehl auszuführen. Wenn der Befehl beendet wird, wird das Fenster geschlossen undscreen
hat nichts mehr zu tun, sodass es beendet wird.