PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tastencodes an einen Java-Prozess senden...



TheFreeman
05.09.14, 11:03
Hi,

ich starte per Bashscript eine Javaanwendung per:



java -jar /opt/trace/tools/jtracecapture.jar -G 2 -o /home/j/traces/$TRACE_DIR ${unitip[$UNITID]} -s


So, jetzt habe ich in der shell folgende Ausgabe:



... bla bla
Enter <q> + Return to stop logging and quit.
Enter 'c <type> <id> <level>' to change level of entity.
Enter 'm' to set a marker.
Enter 'x <id> [args]' to execute callback.
... bla bla


Wenn ich nun direkt "q" und "Return" drücke, dann schreibt dieser Tracer seine Daten in ein File und beendet sich danach.

Jetzt möchte ich das aber per bash erledigen

Wenn ich aber in den Prozess dieser Java-Shell die Zeichen pipe, dann passiert leider nichts.
Beispiel:



echo "q" > /proc/$PID/fd/0
echo > /proc/$PID/fd/0


oder per ASCII


awk -v char=113 'BEGIN { printf "%c\n", char; exit }' > /proc/$PID/fd/0
awk -v char=13 'BEGIN { printf "%c\n", char; exit }' > /proc/$PID/fd/0


BEIDE Varianten kommen auch sichtlich wie erwartet in der shell an,
aber der Javaprozess läuft weiter. Was könnte ich denn da noch veruchen?

Hat einer von Euch Gurus eine Idee dazu?
Ich bin am verzweifeln. :ugly:

LG Daniel

marce
05.09.14, 11:20
Schau Dir mal expect an.

TheFreeman
05.09.14, 11:51
Aber expect kann ich doch nur benutzen, wenn ich das jar auch innerhalb expect gestartet habe, oder?
Das würde aber dann nicht hinhauen, da ich es irgendwann vorher schon per script gestartet habe.
Oder wie hast Du das gemeint? Hast Du ein Beispiel?