Каждый раз, когда процесс сильно печатает на stdout
, если я пытаюсь убить
процесс с помощью отправки сигнала "ctrl + c"
, процесс не останавливается сразу. Но если я перенаправляю вывод в файл, процесс немедленно останавливается, если я нажимаю «ctrl + c»
.
Infact Если я использую gnu screen
, и мой процесс сильно выводит на stdout
, то я также не могу переключить вкладку
. Почему такое поведение
Процесс может генерировать выходные данные намного быстрее, чем комбинация сети и экрана может их отобразить.
При нажатии ctrl-C эта последовательность клавиш может занять некоторое время, чтобы добраться до сервера, на котором запущен процесс из-за перегрузки сети, вызванной всем выводом; а когда процесс завершается, может потребоваться значительное время, прежде чем весь уже сгенерированный вывод будет отправлен на экран из-за буферизации в различных местах: сначала сетевой буфер на сервере, пакетные буферы в пути на e. g. маршрутизаторы, входная сетевая очередь на системе отображения, а затем входной буфер ssh / screen / X окон (в зависимости от того, где запущен экран screen
). При использовании закладок экрана
при переключении screen
возникает в основном та же проблема: последовательность ctrl-AA может задерживаться по пути к серверу, затем экран screen
может сразу переключить отображаемый терминал, но это будет видно только после того, как на локальной системе отобразится все, что уже находится в процессе работы.