Я использую функцию ожидаемого запуска приложения на моем сервере:
#!/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 }
}
Я могу получить доступ к приложению на своем сервере в течение нескольких секунд, пока выполняется сценарий, но как только он завершится, приложение станет недоступным.
Я запустил ожидаемо в режиме отладки и в конце получаю следующий вывод:
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
Я пытался использовать exit 0
, interact
, exp_continue
, disconnect
, sleep 10
по последнему шаблону, а также ожидал eof
, но, похоже, ничего не работает. Я также пытался запустить expect start-all.exp &
, но это тоже не работает.
Когда я запускаю bin/start-all.sh вручную, скрипт запускает необходимые процессы и затем завершает работу. Однако, как ожидается, эти процессы, кажется, убивают. Как бы я исправить эту проблему?