Erwartet Ich verwende erwarten eine Anwendung auf meinem Server zu starten:Hintergrund erzeugten Prozess in
!/usr/bin/expect
set timeout -1
spawn "bin/start-all.sh"
expect {
-re "Found MongoDB in" { send "y\r"; exp_continue }
-re "Found Hadoop in" { send "y\r"; exp_continue }
-re "Going to start Hadoop" { interact }
}
ich die Anwendung auf meinem Server in den wenigen Sekunden zugreifen kann, während das Skript ausgeführt wird, aber sobald Es endet die Anwendung wird nicht verfügbar.
Ich habe laufen im Debug-Modus erwarten und die folgende Ausgabe zum Ende erhalten:
expect: does "vendors area. Do you want to start it? [y/n] y\r\n" (spawn_id exp6) match regular expression "Found MongoDB in"? Gate "Found MongoDB in"? gate=no
"Found Hadoop in "? Gate "Found Hadoop in "? gate=no
"Going to start Hadoop"? Gate "Going to start Hadoop"? gate=no
Going to start Hadoop...
expect: does "vendors area. Do you want to start it? [y/n] y\r\nGoing to start Hadoop...\r\n" (spawn_id exp6) match regular expression "Found MongoDB in"? Gate "Found MongoDB in"? gate=no
"Found Hadoop in "? Gate "Found Hadoop in "? gate=no
"Going to start Hadoop"? Gate "Going to start Hadoop"? gate=yes re=yes
expect: set expect_out(0,string) "Going to start Hadoop"
expect: set expect_out(spawn_id) "exp6"
expect: set expect_out(buffer) "vendors area. Do you want to start it? [y/n] y\r\nGoing to start Hadoop"
tty_raw_noecho: was raw = 0 echo = 1
interact: received eof from spawn_id exp6
tty_set: raw = 0, echo = 1
tty_set: raw = 5, echo = 0
Ich habe versucht, mit exit 0
, interact
, exp_continue
, disconnect
, sleep 10
unter dem letzten Muster, sowie erwartet eof
, aber nichts scheint zu funktionieren. Ich habe auch versucht, expect start-all.exp &
zu laufen, aber das funktioniert auch nicht.
Wenn ich bin/start-all.sh manuell ausführen, startet das Skript die notwendigen Prozesse und wird dann beendet. Allerdings erwarten diese Prozesse, dass sie getötet werden. Wie würde ich dieses Problem beheben?
Es gibt viele Details, aber es ist nicht klar, was genau Sie erreichen möchten. –
Es ist ein langer Schuss, aber hast du am Ende "expect eof" probiert? –
Ich fürchte, ich bin mit diesem start-all.sh-Skript nicht vertraut. Es ist möglich, dass es etwas seltsames macht, wenn es in Expect's PTY läuft, was zu einem vorzeitigen Abbruch führt. – user108471