Befehl an Prozess schicken, der per screen abläuft

C

conner

Mitglied
Moin!
Ich habe einige Prozesse gestartet, die mit screen -d im Hintergrund laufen.
Ich würde jetzt gerne an diese Prozesse Kommandozeilenbefehle schicken.
Wenn ich die Prozesse mit screen -r PID wieder in den Vordergrund hole, kann ich da z.B. ein 'status' oder 'reload', etc. eintippen, das wird dann auch ausgeführt. Hinterher lege ich den Prozess dann wieder in den Hintergrund mit <strg> + <a> +<d> oder dem entsprechenden Kommandozeilenbefehl.

Ich möchte das ganze etwas automatisieren und per Cronjob laufen lassen. Mir ist nicht klar, ob man dem Prozess einen Kommandozeilen Befehl "unterjubeln" kann, wenn er im Hintergrund läuft.

Versucht habe ich screen -S -X exec <command>

Ich starte einen Prozess mit screen -A -m -d -S hlds ./start
kann ich mir mit screen -r auch anschauen - läuft.

Wenn ich von einer anderen Konsole jetzt z.B.
screen -S hlds -X exec status
abschicke, komt das Kommando auch da an, wo es hinsoll, aber in dem "gescreenten" Prozess wird nur ausgegeben:

Cannot exec 'status' : Datei oder Verzeichnis nicht gefunden

Der gleiche befehl in dem ablaufenden Programm eingegeben funktioniert und zeigt den aktuellen Status an...

Was nun - Befehle kommen an, werden aber nicht "verstanden". Eine Idee? :hilfe2:

Gruß Bionic
 
Hi, ich habe zwar keine Ahnung von 'screen', aber
Cannot exec 'status' : Datei oder Verzeichnis nicht gefunden
heißt für mich, daß versucht wurde ein Programm mit dem Namen 'status' zu starten und nicht, daß versucht wurde 'status' an ein Programm zu übergeben.
 
Yepp, so sieht es leider aus. Mit -X exec <command> kann ich Systembefehle im screen ausführen - leider aber nicht die Befehle, die das ablaufende Programm hergibt.

Wenn ich z.B. -X exec date eingebe, bekomme ich das Systemdatum ausgegeben - das hilft leider nicht weiter.

Ist mir gestern durch Zufall aufgefallen.

Noch ne Idee?
Gruß Conner
 
Hi, wenn du von vornherein genau weißt, welche Eingaben bzw. 'Befehle' das Programm der Reihe nach bekommen soll, dann schreibe diese (je Eingabe eine neue Zeile) in eine Textdatei ('Antwort.txt'), die du dem Programm dann gleich beim Start mit übergibst (mittels sog. redirection bzw. Eingabe-Umleitung):
Code:
$ echo 'j' > Antwort.txt
$ cp -i Datei-1 Datei-2 < Antwort.txt
Falls 'Datei-2' bereits existiert, wird dann in diesem Beispiel die Frage 'cp: „Datei-2“ überschreiben?' automatisch mit 'j' beantwortet.
 

Ähnliche Themen

Hilfe bei Screen innerhalb von scripten

verzeichniss suche funktioniert nicht

Minecraft Startscript

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

Displayport + externer Monitor zeigt bei startx nichts erst bei DVI

Zurück
Oben