#ruby-on-rails #shell #unix #terminal
#ruby-on-rails #оболочка #unix #терминал
Вопрос:
Я на Mac osx использую zsh. Если я запускаю сервер rails с «rails s», я могу перевести его в фоновый режим, нажав «ctrl-z» в моем терминале (zsh).
Если я открываю другое окно терминала, то я не вижу сервер rails, если я выполняю «задания». Однако я могу видеть это, когда я делаю «ps».
Есть ли способ, которым я могу каким-то образом «отменить приостановку» сервера rails в этом новом окне терминала?
Комментарии:
1. Я пометил этот вопрос как не по теме: на самом деле речь идет об обработке процессов в системе * nix, а не о Ruby on Rails.
2. Я не согласен, эта проблема возникла, потому что я работаю над приложением rails. Я полагаю, что у разработчика rails будет столько же шансов узнать ответ, сколько у пользователя * nix. Хотя я признаю, что тег «ruby», вероятно, не самый подходящий.
3. Достаточно справедливо, но все же: это универсальная проблема * nix / processes, и кто-то из ServerFault, вероятно, знает лучше. Мы разработчики, а не специалисты по * nix.
Ответ №1:
Вы не можете легко переместить процесс на новый tty. Самым простым решением было бы запустить его в сеансе screen, отсоединить screen и затем возобновить в новом терминале.
Ответ №2:
Задание «останавливается» путем отправки ему SIGSTOP
.Ваш C-z
не отправляет задание в фоновый режим. Это «останавливает» его. Затем вы можете переместить его в фоновый режим, используя bg
встроенную оболочку. Однако, если вы отправите этому процессу SIGCONT ( kill -CONT <pid>
), это должно вернуть процесс на передний план. Это можно сделать из другой оболочки.
Вы не увидите его, если введете jobs
потому что это задание, управляемое другой оболочкой (другое окно терминала, а не то, в котором вы ввели задания). Процессы, однако, являются «глобальными» и могут быть видны из любого места с помощью ps
команды (как вы правильно указали).
Обновление: Похоже, я заговорил слишком рано. По-видимому, одного сигнала недостаточно, чтобы вернуть его на передний план. Вероятно, что-то связано с оболочкой.