GNU Screen Copy блокирует выполнение режима?

11

Я использую режим прокрутки / копирования GNU Screen. Поэтому я нажимаю Control-A [, чтобы войти в режим копирования, прокручиваю до нужного мне раздела ... и затем забываю.

Тем не менее, кажется, что экран GNU в режиме прокрутки / копирования блокирует выполнение (независимо от того, какое приложение было в данный момент). Например, если я запускаю локальный веб-сервер, если я нахожусь в режиме прокрутки / копирования, то запросы к этому веб-серверу прекратятся: процесс не ответит, пока я не выйду из режима копирования / прокрутки.

Я видел это как в скрипте / сервере Ruby On Rails, так и с помощью инструмента Python Paste.

Я рассмотрел включение режима ведения журнала для моих окон, а затем просто перебирал / просматривал эти файлы журналов в качестве альтернативы, но если это можно контролировать другим способом (настройка, активация режима копирования другим способом), я очень заинтересован.

Моя версия экрана говорит:

Версия экрана 4.00.03 (FAU) 23 октября 2006 года

(Я спросил это на quora.com, но, возможно, это лучшее место)

RyanWilcox
источник

Ответы:

8

Причина, по которой ваши процессы блокируются, заключается в том, что screen заблокирует выходной канал процесса, пока вы находитесь в режиме копирования и вставки. Я не считаю это действительно ошибкой, поскольку реально вы просите экран сохранить потенциально неограниченное количество информации в своем буфере во время копирования / вставки. Если вы хотите, чтобы вывод программы проходил мимо, но при этом вы могли приостанавливать его время от времени, попробуйте это.

program > logfile 2>&1 & 
less logfile

2> & 1 объединит stderr и stdout из вашей программы. & Отправляет программу в фоновый режим. Используйте fg, чтобы вывести его на передний план, если вам нужно. Теперь нажмите F, чтобы следовать за концом файла журнала, поскольку он увеличивается с меньшим. Нажмите Ctrl + C, если вам нужно что-то остановить и проверить, затем F, чтобы повторить. Вы также можете нажать &, чтобы ограничить видимые строки меньше регулярным выражением. Очень удобно при просмотре файлов журнала.

JMH
источник
«Экран заблокирует канал вывода процесса, пока вы находитесь в режиме копирования-вставки» - это может быть верно, если сгенерировано определенное количество выходных данных, но в данном случае это не так: while ((1)) ; do echo $i; i=$((i+1)); sleep 0.1; done- попробуйте вызвать Copy режим и немного подожди. Когда вы выходите из режима копирования, значение i будет скачкообразным, показывая, что выполнение продолжается в фоновом режиме. Тем не менее, я видел вывод экранных блоков для некоторых процессов, поэтому мне интересно, что именно определяет, блокирует экран или нет.
Дэвид
«что именно определяет, блокирует экран или нет» - это определяет размер буфера прокрутки. Вы можете увеличить его до неограниченного, но это займет память. Но не будет блокировать.
Сан