• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Befehl in einem anderen Screen per Sript ausführen

Bomber8475

Member
Hab da ein kleines Problemchen:

Und zwar starte ich ein Programm in einem anderen Screen
Code:
screen -d -m
Damit ich in der Console, nur wenn erforderlich, Befehle tippen kann (keine Shellbefehle sondern von dem Programm)
Nun kann ich das Programm in dem Screenfenster einfach mit "exit "beenden. Da ich das aber automatisieren will möchte ich einfach ein Script ausführen was mit diesen Exit Befehl in den anderen Screen "tippt" und ausführt.

Wenns jetzt ein Shellbefehl wäre würde wahrscheinlich
Code:
screen -X Befehl
ausreichen, aber es kommt nur die Meldung das "exit" nicht bekannt ist..

Kann mir da jemand weiter helfen?
 

imat

Member
Bei -X ist nicht ein Shellbefehl gemeint, sondern ein screen-commando (Tastaturkommando) wenn du den Screen also beenden willst musst du

screen -X quit

senden. Die möglichen Commandos stehen in der Manpage von screen in den () "Klammern" zu der Tastenbelegung

z.B.

C-a C-\ (quit) Kill all windows and terminate
screen.
 
OP
Bomber8475

Bomber8475

Member
Na eben das will ich ja nicht.

Ich will dem Programm was in dem Screen läuft ein Befehl senden was das Proggie interpretieren soll und nicht die Shell oder der screen.

In der Art wie es bei EOF funktioniert, wenn man z.B. einem FTP was schicken will oder was empfangen will. Da werden ja auch die FTP spezifischen Befehle gesendet und ausgeführt. Sowas soll nun in dem anderen Fenster passieren..
 

imat

Member
Ah, jetzt verstehe ich dich :)

Ich weis nicht ob das die optimale Lösung ist aber:

- Datei mit dem Inhalt erstellen z.B. /tmp/screeninput
- dann

screen -X readbuf /tmp/screeninput

(liest die Datei in den copy&paste Puffer)

screen -X paste .

(pasted den Pufferinhalt)
 
OP
Bomber8475

Bomber8475

Member
Es funktioniert auch nicht.

beim
Code:
screen -X readbuf
willer er schon auf den anderen screen zugreifen
 

imat

Member
Versuch doch bitte einmal ganz detailiert, am besten mit einem Beispiel, zu erklären was genau du machen willst. Eventuell gibts ja ne ganz andere Lösung für dein Problem .....
 
OP
Bomber8475

Bomber8475

Member
Okay:

Ich starte per Script ein Java Programm namens Applejuice:
Code:
screen -d -m java -jar ajcore.jar

Wenn ich das Programm ohne Datenverlust stoppen will muß ich in das mit Screen erzeugte Fenster wechseln und "exit" tippen, eine andere Möglichkeit bietet das Proggie soweit ich weiß nicht. Wenn ich
Code:
killall java
tippe hab ich einen Datenverlust.

Nun will ich in dem Script das Proggie normal schließen, als wenn ich in den Screen gehe und "exit" tippe.
 

Wosh

Newbie
Das Thema ist zwar schon etwas älter, habe aber auch eine Frage zu screen.

Erstmal könnte es bei dir so klappen:

screen -r java -X readbuf /tmp/screeninput

Und schon bin ich bei meinem Problem, denn so wie ich das sehe wertet screen bei diesem beispiel nur das "readbuf" nicht aber den Parameter "/tmp/screeninput" und genau das brauche ich, bei mir soll es den kompletten befehl an das fenster übergeben, macht screen aber leider nicht.

Gibt es dafür ein anderen Parameter oder geht das überhaupt irgendwie???
 

Chriki

Newbie
Hallo,

so sollte es mit attachted/detachted screen gleichermaßen klappen:

Code:
screen -S <PID_des_screen> -X readbuf /tmp/screeninput

und dann

Code:
screen -S <PID_des_screen> -X paste .

Man muss darauf achten, dass der Dateiparameter von "readbuf" ein absoluter Pfad ist.

Ciao,
Chriki TM.
 
Oben