Исправление CTRL-* в vim под GNU screen

Раскапываю здесь действительно старый вопрос - но у меня была такая же проблема. Для меня проблема в том, что MYSQLD запущен.

Для начала я заметил, что мои проверки работоспособности начали давать сбой после переключения на экземпляр t1-nano ubuntu в ec2 (1 ядро ​​512 RAM). В то время я думал, что это будет нормально, потому что я запускал nginx только со статической проверкой работоспособности, записью 301 и несколькими другими записями статических файлов. Я забыл, что несколько месяцев назад установил wordpress с mysql для друга.

Я бы посмотрел на вывод TOP и увидел, что kswapd0 пережевывает весь процессор. Это было не так, пока я не использовал htop и не отсортировал по памяти, я не увидел, что mysql поглощает всю память.

Я удалил mysql, и все нормализовалось.

10
13.04.2017, 15:37
3 ответа

В случае FUSE и ZFS производительность ужасна, и это понятно.

Руководство по настройке FreeBSD содержит несколько указателей. Статья длинная, и есть много конкретные точки для разных архитектур, поэтому я не буду копировать ее сюда. Наиболее важнейший пункт является то, что вам нужно много памяти, один гигабайт минимум.

raidz помогает только в том случае, если производительность ввода-вывода диска является узким местом. Если это программные ошибки, процессор или память, с этим не будет лучше.

-121--291846-

Aptitude перечисляет их в разделе «Устаревшие и локально созданные пакеты». Соответствующий образец поиска является ? устаревшим или ~ o .

aptitude search '?obsolete'
-121--291830-

Как было указано в его обновлении, добавление термина xterm в файл ~/.screenrc устраняет эту проблему.

5
29.04.2021, 01:01

Есть еще пара способов установить терминал, которые работают в запущенных процессах:

  • В запущенном экземпляре экрана нажмите ^A-: и команда term xterm заставит вновь открываемые экраны под этим экземпляром запускаться с их $TERM переменной окружения, установленной на xterm; это в свою очередь распространится на вызванные vim экземпляры. Эти экземпляры vim будут отображать правильное поведение в отношении CTRL-комбо; я пока не обнаружил никаких побочных эффектов этой стратегии. Эта команда не влияет на существующие экраны. Конечно, эта команда может быть использована в файле ~/.screenrc, поэтому возможно, что этот метод был использован на другой машине.

  • В запущенном экземпляре vim команда set term=xterm заставит CTRL-комбо работать в этом экземпляре vim. Это имеет побочный эффект отключения буфера обмена X (т.е. @* и @+) по причинам, которые я пока не понимаю. Интересно, что побочный эффект буфера обмена также происходит, когда команда :set term=screen выполняется в экземпляре vim, запущенном с $TERM=xterm.

2
29.04.2021, 01:01

Основная проблема заключается в том, что отображение, выполняемое screen , между фактическим терминалом (определенным средой TERM переменная вне экрана ), а эмуляция внутри экрана не завершена.

Если вам случится протестировать его (используя vttest или tack ), вы можете заметить недостатки для

  • цветов
  • специальных клавиш

Попытка исправить эти проблемы путем установки термин в .screenrc имеет недостаток, заключающийся в том, что он работает только для данного фактического терминала и не переносится на другие реализации терминала. Документация примечания

Использование термина команда не рекомендуется для целей, отличных от значений по умолчанию.

Есть другое решение (с другим недостатком), использующее эту функцию из screen документации :

Когда screen пытается определить имя терминала для себя, он сначала ищет запись с именем экран. термин , где термин - это содержимое вашей переменной $ TERM . Если такой записи нет, screen пытается screen (или screen-w , если терминал широкий (132 столбца или более)). Если даже эта запись не может быть найдена, вместо него используется vt100 .

ncurses предоставляет несколько полезных альтернативных описаний терминалов для этого случая, например, screen.xterm-new , для устранения проблем с отображением экрана. На практике я использую TERM = xterm-new , и при запуске screen получить полезное отображение функциональных клавиш.

Возвращаясь к настройке термина экрана, при тестировании вы можете заметить, что все еще проблемы с отображением, которые решаются в этих альтернативах. Если бы было возможно получить точное описание терминала, используя термин , эти альтернативы были бы простыми псевдонимами для экрана . Они не.

ncurses не предоставляет screen.xterm (sic), потому что:

  • TERM = xterm часто неправильно используется для эмуляторов терминала, которые отличаются от xterm; добавление этого сопоставления только усугубит эту ситуацию (см., например, Почему бы просто не использовать TERM, установленный на «xterm»? в ncurses FAQ)
  • экран альтернативного имени .xterm с меньшей вероятностью будет установлен в удаленных системах (см. комментарий к изменению от июнь 2015 в базе данных терминала).

В целом, однако, использование альтернативных имен является улучшением по сравнению с использованием термина в вашем .screenrc : это решает больше проблем, чем создает. Обратное верно для параметра члена .

4
29.04.2021, 01:01

Теги

Похожие вопросы