2015-09-09 3 views
0

Когда я пытаюсь выйти из рубиновых процессов, а именно спецификаций, консоли rails и вызовов binding.pry, есть два варианта: ctrl + c, ctrl + z, или если что-то действительно застряло, откройте отдельный и killall ruby. Однако, когда я ctrl + c первый раз, терминал выдает Exiting... Interrupt again to exit immediately., но висит постоянно. Если я снова нажму Ctrl + C, чтобы принудительно выйти, он успешно завершает работу. Однако с этого момента я больше не могу видеть, что я ввожу в оболочку. Поэтому, если я наберу ls, строка по-прежнему будет отображаться пустой, но если я нажму кнопку enter, она успешно выполнит команду ls.Попытка выхода из Ruby-процессов

Когда мне ctrl + z, он успешно остановит процесс. Однако, после этого несколько раз, я заканчиваю с запуском рубиновых процессов, которые, похоже, блокируют запуск новых рубиновых процессов. В этом случае killall ruby ничего не делает (и не выполняет никаких производных, таких как поиск по pid). Мне нужно открыть монитор активности (mac) и принудительно завершить каждую процедуру отдельно.

Любые идеи, как мне удалось попасть в это/как его решить?

+1

Одно слово для вас: 'SIGKILL'. Как в 'killall -m ruby ​​-9'. Я делаю это все время с 'spring'. Эта штука просто не выйдет изящно. –

+0

Что касается того, почему это происходит на вашей машине, я понятия не имею. Что-то должно быть иначе. Сравните спецификации/конфигурации двух машин. –

+0

Убийство приостановленного процесса не работает, если вы не убили его с помощью SIGKILL. –

ответ

2

Killing все ваши экземпляры Ruby - это подход с дробовиком; вы можете поразить цели, которых вы не намеревались, поэтому я предлагаю избежать этого.

Если ваша оболочка не показывает, что вы печатаете, вам необходимо (вслепую) ввести reset для сброса терминала.

Ctrl + Z не убивает свой процесс, это просто получить приостановлено. Вы должны получить вывод, который сообщает вам номер задания, например:

[1] + 95295 suspended man reset 

Здесь 1 - номер задания. Затем вы можете возобновить команду, набрав fg %<jobnumber>, в этом примере fg %1. Или вы можете убить его с помощью kill -9 %<jobnumber>, например kill -9 %1.

+0

Удивительный, не более постоянный повторный набор в тот же каталог, спасибо! – Raphi

+0

Или просто 'fg', чтобы возобновить текущую работу – Stefan

Смежные вопросы