2015-02-12 2 views
0

Я скрипт рестарта написал в рубинеудаленной команды SSH не выходя

#!/usr/bin/env ruby 

require "#{DIR}/etc/control_helper" 


###### MAIN program ################ 
case action 
    when 'start' 
     ..... 

    when 'stop' 
      ..... 
    when 'restart' 
     kill_the_old_process_if_needed(PORT_NUM, APP_NAME, APP_FILE_NAME) 

     new_pid = start_a_new_process!(ENVIRONMENT, PORT_NUM, APP_FILE_NAME) 
#here there is an **exit(0)** 
     check_for_success_in_starting_new_process!(hostname, new_pid) 

end 

работает код с локального компьютера работает:

ruby etc/control_app.rb restart production 

но запустить его с удаленного SSH (Jenkins машина, после того, как изменение кода) не выходит.

gcloud compute ssh remote_server --zone us-central1-a --command "cd /path/to/app; ruby etc/control_app.rb restart production" 
  1. если я изменить сценарий и поставить exit(0) в первый потом выходит.

  2. Я знаю, что он добирается до выхода (0), потому что я разместил печать непосредственно над ней.

ответ

0

В конечном итоге это был фактический сценарий. он работает питон скрипт

PYTHON_ENV=#{environment} nohup python #{APP_FILE_NAME} > #{environment}.log 

добавил & в конце

PYTHON_ENV=#{environment} nohup python #{APP_FILE_NAME} > #{environment}.log &