Hallo, Ich starte z.B eine bash mittels screen, um spaeter wieder auf diese zugreifen zu koennen mit $ screen -dmS testsession bash Das reaktivieren der console klappt auch gut mit: $ screen -S testsession -x Hier kann man nun wie gewohnt commandos eingeben und die session dann mit ctr-a-D wieder verlassen nun will ich aber nur ein commando zur testsession senden ohne es interaktiv einzugeben und dachte folgendes funktioniert: $ screen -S testsession -X echo "beep" tuts aber nicht. Wenn man wahrendessen die session mit "screen -S testsession -x" beobachtet, wird "beep" einige sekunden eingeblendet aber nicht wie gewollt als commando ausgefuehrt. Ich habe auch mal $ screen -S testsession -X exec echo "beep" probiert. Dann wird "beep" zwar duaerhaft in die session-console geschrieben aber trotzdem nicht ausgefuehrt. Kann mir da jemad weiterhelfen? cu, Ruediger
Hi On Monday 18 April 2005 13:45, Ruediger Meier wrote:
Hallo,
Ich starte z.B eine bash mittels screen, um spaeter wieder auf diese zugreifen zu koennen mit
$ screen -dmS testsession bash
Das reaktivieren der console klappt auch gut mit:
$ screen -S testsession -x
Hier kann man nun wie gewohnt commandos eingeben und die session dann mit ctr-a-D wieder verlassen
nun will ich aber nur ein commando zur testsession senden ohne es interaktiv einzugeben und dachte folgendes funktioniert:
$ screen -S testsession -X echo "beep"
Das wäre das screen-commando echo!
tuts aber nicht. Wenn man wahrendessen die session mit "screen -S testsession -x" beobachtet, wird "beep" einige sekunden eingeblendet aber nicht wie gewollt als commando ausgefuehrt.
Das screen-commando echo dient dazu dem Nutzer in der untersten Zeile etwas mitzuteilen.
Ich habe auch mal
$ screen -S testsession -X exec echo "beep"
probiert. Dann wird "beep" zwar duaerhaft in die session-console geschrieben aber trotzdem nicht ausgefuehrt.
Was da genau passiert verstehe ich so auch nicht genau. Zudem verhält sich mein screen dabei scheinbar nicht komplett reproduzierbar. Zumindest habe ich den genauen Zusammenhang noch nicht entdeckt (Screen version 4.00.02 (FAU) 5-Dec-03). Es ist etwas anderes ob ich die session schonmal attached hatte oder nicht. Wobei das ausführen auch nach einem anhängen mit "-x" oder auch mit "-r" bei mir immer klappt. Folgendes getestet. screen -dm gestartet und auf anderer Konsole screen -X exec top: Nichts passiert. screen ohne alles gestartet und auf anderer Konsole screen -X exec top: top erscheint screen -dm gestartet mit screen -x eingehängt und auf anderer Konsole screen -X exec top: top erscheint Alles das ist aber nicht das gleiche wie anhängen, am bash-Prompt eintippen und <Enter> drücken. Bei obigem wird nur dir Ausgabe des Kommandos in den aktuellen Kontext gepipet. Ich hatte auch anfangs (jetzt merkwürdigerweise nicht mehr) mal ein "... not found" in der untersten Zeile in einer Eingehängten session beobachtet, wenn ich echo/top ohne Pfad angegeben hatte. Mit Pfad ging es schon. So wie ich die manpage verstehe sollte es ohne Pfad auch gar nicht gehen.
Kann mir da jemad weiterhelfen?
Du könntest versuchen screen mit debugging zu kompilieren und dann ins logfile schauen. Oder du spielst noch etwas mit den optionen rum. Ich vermute screen -dm aktiviert das window irgendwie noch nicht. Es bringt auch nichts das Kommando "log" an eine solche session zu schicken. Erst nach einmaligem attachen der Session wird dann ein logfile erzeugt. mfg Axel
Hallo, vielen Dank fuer Deine ausfuehrliche Abtwort. On Monday 18 April 2005 17:14, Axel Heinrici wrote:
$ screen -S testsession -X echo "beep"
Das wäre das screen-commando echo!
Das screen-commando echo dient dazu dem Nutzer in der untersten Zeile etwas mitzuteilen.
ok ich dachte urspruenglich screen schreibt das "beep" einfach in die emulierte console, so als ob man es dort eintippen wuerde.
Ich habe auch mal
$ screen -S testsession -X exec echo "beep"
probiert. Dann wird "beep" zwar duaerhaft in die session-console geschrieben aber trotzdem nicht ausgefuehrt.
Was da genau passiert verstehe ich so auch nicht genau.
Ich denke jetzt er fuehrt einfach das shell-commando 'echo "beep"' aus und schreibt den output in die screen console.
Zudem verhält sich mein screen dabei scheinbar nicht komplett reproduzierbar. Zumindest habe ich den genauen Zusammenhang noch nicht entdeckt (Screen version 4.00.02 (FAU) 5-Dec-03). Es ist etwas anderes ob ich die session schonmal attached hatte oder nicht.
sie unten Anm.3 man braucht z.B die Option -p 0 (obwohl ich das mit der Manpage auch nicht exact ergruenden kann warum es nach einem -x auch ohne klappt)
screen -dm gestartet mit screen -x eingehängt und auf anderer Konsole screen -X exec top: top erscheint
yep, analog zu obigem exec echo "beep"
Alles das ist aber nicht das gleiche wie anhängen, am bash-Prompt eintippen und <Enter> drücken. Bei obigem wird nur dir Ausgabe des Kommandos in den aktuellen Kontext gepipet.
genau, und das war mein eigentliches Problem, da ich natuerlich eigentlich keine "bash" sondern ein anderes Programm welches auf Eingaben wartet mit screen "einsperren" moechte. "exec" fuehrt aber eben nur shell commandos aus die irgendwo im PATH existieren muessen. Allerdings habe ich jetzt herausgefunden wie's geht :) Du kannst es z.B mit dem mysql clienten oder auch mit "top" probieren: $ screen -dmS test top (am besten im 2ten xterm beobachten: screen -drS test -x) $ echo "u" > befehl $ screen -X -S test readbuf befehl $ screen -X -S test paste . $ echo $USER > befehl $ screen -X -S test readbuf befehl $ screen -X -S test paste . Du hast also top auf dem test-screen mitgeteilt nur die Prozesse von $USER" anzuzeigen. Anm.1 Ganz klar ist mir noch nicht wann und warum readbuf ein <RETURN> am Zeilenende anfuegt. Bei "u" in top waere ein <RETURN> am Ende ja sogar falsch, funktioniert aber trotzdem komischerweise obwohl screen sagt "Slurped 2 characters into buffer" (also ist wohl ein linfeed dazugekommen) Anm.2 Den Umweg ueber die textdatei "befehl" kann man sich sicher irgendwie sparen wenn man etwas mehr Ahnung von bash hat als ich;) Wahrscheinlich mit EOF ... irgendwas Anm.3 Das ganze klappt so nur wenn man die screesession einmal vorher reattached hatte oder man muss z.B $ screen -X -S test -p 0 readbuf befehl verwenden Auf jedenfall ist die Sache recht interessant. Ich kann es hier gebrauchen, um gameserver zu administrieren (ohne rcon). Aber man koennte sicher auch z.B irgendwelche Ablaeufe von Programmen, die auf Texteingaben warten, automatisieren (vielleicht klappts sogar mit ncurses Programmen oder mit Programmen die auf interaktive Passworteingaben warten etc... cu, Ruediger
Hallo! On Monday 18 April 2005 13:45, Ruediger Meier wrote:
Hallo,
Ich starte z.B eine bash mittels screen, um spaeter wieder auf diese zugreifen zu koennen mit
$ screen -dmS testsession bash
Das reaktivieren der console klappt auch gut mit:
$ screen -S testsession -x
Hier kann man nun wie gewohnt commandos eingeben und die session dann mit ctr-a-D wieder verlassen
nun will ich aber nur ein commando zur testsession senden ohne es interaktiv einzugeben und dachte folgendes funktioniert:
$ screen -S testsession -X echo "beep"
tuts aber nicht. Wenn man wahrendessen die session mit "screen -S testsession -x" beobachtet, wird "beep" einige sekunden eingeblendet aber nicht wie gewollt als commando ausgefuehrt.
Ich habe auch mal
$ screen -S testsession -X exec echo "beep"
probiert. Dann wird "beep" zwar duaerhaft in die session-console geschrieben aber trotzdem nicht ausgefuehrt.
Kann mir da jemad weiterhelfen?
Hab soeben herausgefunden wie's funktioniert: in der ersten Console hab ich screen -dmS test bash gestartet. In der zweiten dann screen -drS test -X exec top Und siehe da, top ist gelaufen wenn ich in der ersten Console den Screen reattached hab! Hoffe es funktioniert bei Dir auch! lG Michi.
Hallo, On Tuesday 19 April 2005 08:37, Michael Roesch wrote:
Hab soeben herausgefunden wie's funktioniert: in der ersten Console hab ich screen -dmS test bash gestartet. In der zweiten dann screen -drS test -X exec top Und siehe da, top ist gelaufen wenn ich in der ersten Console den Screen reattached hab!
Hoffe es funktioniert bei Dir auch!
Ja vielen Dank, leider klappt das so nur mit bash befehlen, es ist aber nicht dasselbe als wenn man diese direkt in der screen console eingibt. Ich habs aber jetzt aber geloest bekommen siehe meine andere Mail. cu, Ruediger
participants (3)
-
Axel Heinrici
-
Michael Roesch
-
Ruediger Meier