Терминал продолжает прослушивать пользовательскую задачу после развертывания Capistrano. Как мы отделяемся, не убивая?

Я учусь развертывать с помощью Capistrano и узнал, как выполнить пользовательскую задачу после развертывания. В этом случае я создал chatзадачу и запускаю ее по завершении развертывания:

namespace :deploy do

    desc 'Restart application'
    task :restart do
        on roles(:app) do
            execute 'sudo nginx -s reload'
        end
    end

    task :chat do
        on roles(:app) do
            execute 'sudo kill $(sudo lsof -t -i:4543) ; cd /home/linux/myapp/current ; RAILS_ENV=production rackup private_pub.ru -o 0.0.0.0 -s thin -p 4543 -E production'
        end
    end

    after :publishing, :restart
    after "deploy", "deploy:chat"

end

Это запускает сервер на порту 4543, и все работает хорошо. За исключением того, что это окно не застряло на этом процессе, и если я уйду, я убью его.

Введите описание изображения здесь

Что можно сделать, чтобы отсоединить экземпляр консоли, на котором выполняется эта задача, от процесса на сервере?!

1 ответ

  1. Ситуация такова, что у меня есть машина в Amazon EC2, и я делаю ssh-соединения, чтобы управлять ею.

    Я оставил попытки использовать для этого Капистрано.

    Ну решение, которое я нашел, чтобы отсоединить программу, а затем вернуться к главному терминалу, было tmuxинструментом. Я должен был установить его, а затем запустить tmuxкоманду на терминале, выполнить мою команду, когда tmux открыт, а затем CTRL+Bвыйти из слоя tmux. Задача продолжает выполняться.