Поиск по сайту:

Определите отличный профиль экрана GNU, используя .screenrc


screen, утилита Linux, которая позволяет запускать «экран» внутри терминала, по умолчанию немного недонастроена. Узнайте, как создать отличный экранный профиль, который автоматически загружается каждый раз, когда вы используете screen.

Что такое экран?

Экран — это утилита GNU (GNU — это большой набор программного обеспечения с открытым исходным кодом, и его включение в операционную систему широко известно как Linux), которая позволяет запускать один или несколько экранов внутри вашего терминала.

Вы можете спросить, зачем мне запускать экран внутри моего терминала, и можете ли вы определить экран лучше/дальше? Конечно. Представьте, что вы используете удаленный сервер SSH, и внезапно ваше сетевое соединение обрывается прямо посреди переноса базы данных или производственного резервного копирования, которое выполнялось в окне вашего терминала. Это происходит регулярно, и проблема в том, что любая команда, которая выполнялась в момент разрыва соединения, теперь завершается, независимо от состояния, в котором она находилась.

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

Добро пожаловать в screen, утилиту Linux, которая позволяет вам запускать сеанс виртуального терминала («экран») внутри вашего сеанса терминала. screen сессия не будет прервана при обрыве сетевого соединения или при закрытии терминальной сессии, которая запустила сессию screen (родительский процесс). Вы можете просто подождать, пока ваше сетевое соединение восстановится, или открыть другой терминал, если вы не подключены через SSH и работаете только на локальном компьютере, и просто повторно подключиться к сеансу экрана.

Большой? Давайте быстро установим screen, если вы еще этого не сделали:

Установка экрана

Чтобы установить screen в свой дистрибутив Linux на основе Debian/Apt (например, Ubuntu и Mint), выполните следующую команду в своем терминале:

экран установки sudo apt

Чтобы установить screen в ваш дистрибутив Linux на основе RedHat/Yum (например, RHEL, Centos и Fedora), выполните следующую команду в своем терминале:

экран установки sudo yum

Теперь, когда этот экран установлен, вы можете сразу начать его использовать. Просто запустите screen в командной строке, и все готово. Возможно, вам придется нажать клавишу ввода или пробел, чтобы пройти через экран-заставку screen.

Вы увидите новую командную строку. Нажмите последовательность клавиш CTRL+a > CTRL+d, чтобы вернуться в командную строку сеанса родительской оболочки. Затем вы можете выполнить screen -ls, чтобы просмотреть список активных сеансов экрана. Введя команду (в родительской оболочке, в которой вы сейчас находитесь, если вы следовали тексту точно так же), screen -d -r вернет вас обратно в сеанс screen, при условии, что активен только один сеанс экрана (вы можете запустить несколько).

Если в вашей системе работает более одного сеанса экрана (и он принадлежит вам), вы можете ввести screen -d -r ИМЯ, где ИМЯ — это имя экрана. как указано в screen -ls, например, 367434.pts-1.roel1, просто указав любую часть до или после точки (например, 367 или pts), которые по-прежнему однозначно идентифицируют конкретный сеанс экрана, также достаточно.

Давайте посмотрим, как теперь мы можем определить отличный профиль экрана на основе выдержки из setup_server.sh, расположенного в репозитории Percona-QA GitHub (под лицензией GPLv2), скрипта, созданного для настройки сервера для тестирования обеспечения качества. Я не рекомендую вам запускать этот скрипт, так как он устарел, используется только в качестве справки и обычно запускается вручную шаг за шагом. Единственный раздел, который мы будем использовать, — это код .screenrc, воспроизведенный ниже.

Определение отличной конфигурации .screenrc

Файл .screenrc — это скрытый файл конфигурации в вашем домашнем каталоге. Чтобы отредактировать его (скорее всего, его еще не существует, особенно если вы только что установили screen), просто используйте свой любимый текстовый редактор и откройте файл ~/.screenrc. Если вы Если у вас есть опыт работы с Vim, вы можете просто ввести в строке терминала vi ~/.screenrc.

После того, как вы открыли ~/.screenrc, просто добавьте следующий блок текста:

# General settings
vbell on
vbell_msg '!Bell!'
autodetach on
startup_message off
defscrollback 10000

# Termcapinfo for xterm
termcapinfo xterm* Z0=E[?3h:Z1=E[?3l:is=E[rE[mE[2JE[HE[?7hE[?1;4;6l   # Do not resize window
termcapinfo xterm* OL=1000                                                    # Increase output buffer for speed

# Remove various keyboard bindings
bind x    # Do not lock screen
bind ^x   # Idem
bind h    # Do not write out copy of screen to disk
bind ^h   # Idem
bind ^   # Do not kill all windows/exit screen
bind .    # Disable dumptermcap

# Add keyboard bindings
bind } history
bind k kill

Если вы не хотите использовать текстовый редактор или хотите каким-то образом создать скрипт для установки этого файла .screenrc во многие системы, вместо этого вы можете использовать следующий код, который будет — при вставке или выполнении из другого сценария создайте файл ~/.screenrc для пользователя, выполняющего сценарий. Давайте назовем наш скрипт make_screenrc.sh или похожим.

#!/bin/bash
# Create screen script ~/.screenrc
touch ~/.screenrc
if [ -z "$(cat ~/.screenrc|grep 'termcapinfo xterm')" ]; then cat << EOF > ~/.screenrc
# General settings
vbell on
vbell_msg '!Bell!'
autodetach on
startup_message off
defscrollback 10000

# Termcapinfo for xterm
termcapinfo xterm* Z0=E[?3h:Z1=E[?3l:is=E[rE[mE[2JE[HE[?7hE[?1;4;6l   # Do not resize window
termcapinfo xterm* OL=1000                                                    # Increase output buffer for speed

# Remove various keyboard bindings
bind x    # Do not lock screen
bind ^x   # Idem
bind h    # Do not write out copy of screen to disk
bind ^h   # Idem
bind ^   # Do not kill all windows/exit screen
bind .    # Disable dumptermcap

# Add keyboard bindings
bind } history
bind k kill
EOF
fi

Сценарий задает ряд настроек, и большинство из них говорят сами за себя. Например, startup_message off просто отключает экран-заставку, который мы видели ранее. defscrollback 10000 определяет нашу прокрутку до 10000 строк (вы можете получить доступ к режиму прокрутки/редактирования, нажав последовательность клавиш CTRL+a > CTRL+ESC и вы можете выйти из этого режима, нажав ESC один или два раза).

Мы также включаем виртуальный звонок (поскольку мы не слышим звуковой сигнал динамика удаленного сервера) с помощью команд vbell on и vbell_msg !Bell!, которые устанавливают виртуальный звонок. сообщение для !Bell!. Однако я обнаружил, что виртуальный звонок часто не работает.

Затем мы устанавливаем определенные коды termcapinfo, чтобы увеличить выходной буфер и настроить изменение размера окна. Мы также удаляем различные потенциально раздражающие привязки клавиш и добавляем несколько удобных настроек клавиатуры.

Все, что нам нужно сделать, чтобы активировать эту новую конфигурацию .screenrc, — это открыть новый сеанс screen. Теперь мы воспользуемся новыми настройками.

Подведение итогов

Определение отличного файла .screenrc по умолчанию помогает, когда вы часто используете screen. Отключение экрана-заставки, увеличение прокрутки и улучшение буфера вывода для повышения скорости — это лишь некоторые из вещей, которые мы сделали в нашем шаблоне .screenrc. Наслаждайтесь использованием экрана и шаблона .screenrc!