Скрытые возможности `screen`


31

Поскольку я весь день пользуюсь командой * nixscreen и не могу найти никого, кто начал бы задавать этот вопрос, я решил, что он должен быть запущен. Вы знаете упражнение: вики сообщества, один ответ на каждую функцию, чтобы мы все могли голосовать.


5
Экран настолько полезен, что принадлежит всем сайтам: stackoverflow.com/questions/70614/gnu-screen-survival-guide
Зак Томпсон

Ответы:


31

Я люблю использовать его для подключения к последовательным консолям, т.е.

screen /dev/ttyS0 19200

Эта команда просто открывает соединение с последовательным портом 0 (ttyS0) со скоростью 19200 бод


это одна из моих любимых вещей, которая выводит людей из себя, действительно одна из самых
неожиданных

1
И действительно один из моих любимых. Не нужно разбираться или настраивать minicom, conserver и т. Д. Я почувствовал себя маленьким ребенком в кондитерской, когда обнаружил это.
Скотт Пак

Безусловно - приятно иметь открытую экранную сессию, разделенную на два окна, с видимыми обоими USB-последовательными ключами.
dotwaffle

10

Лучшая особенность screen- это Byobu (ранее скрин-профили), который поставляется с Ubuntu по умолчанию со времен Jaunty: https://launchpad.net/byobu

Это менеджер конфигурации с очень хорошими настройками по умолчанию, тоннами уведомлений о состоянии и полезными сочетаниями клавиш (например, f2 для нового экрана, f3-f4 для предыдущей / следующей и т. Д.)

Я действительно больше никуда не хожу без этого :)


10

Из ответа KTamas: более одного человека могут использовать один и тот же экран, т. Е. Если ваш друг sshподключится к вашему компьютеру, он сможет подключиться к вашему экрану. Здорово, когда два или три человека работают над одними и теми же проектами.


1
Это намного лучше для того, чтобы следить за тем, что делают пользователи удаленной поддержки, и убивать их сессию, если у них ничего не получается!
Том О'Коннор

6

Не совсем «скрытая особенность»; но правильно настроенный файл .screenrc может иметь огромное значение. Один из лучших примеров можно найти в googling screenrc и 'brad sims' - у него есть отличный файл для работы.

Тем не менее, мой любимый параметр будет bindkey:

# bind F7  to detach screen session from this terminal
# bind F8  to kill current screen window.
# bind F9  to create a new screen
# bind F10 to rename current screen window
# bind F11 to move to previous window
# bind F12 to move to next window
bindkey -k k7 detach
bindkey -k k8 kill
bindkey -k k9 screen
bindkey -k k; title
bindkey -k F1 prev
bindkey -k F2 next

2
Учитывая, что ctrl + a слишком часто используется за пределами экрана (начало строки в bash?) Мне это нравится.
Скотт Пак

1
Ctrl + A / Ctrl + E для перемещения курсора, но также и когда Minicom работает на экране. Ctrl + a, a, o для опций ...
petrus

6

Я не могу вспомнить, у кого я это украл (кто-то на dotfile.org). Я слегка изменил его для ssh:

#!/bin/sh
# scr - Runs a command in a fresh screen
#
# Get the current directory and the name of command

wd=`pwd`
cmd=$1
shift

# We can tell if we are running inside screen by looking
# for the STY environment variable.  If it is not set we
# only need to run the command, but if it is set then
# we need to use screen.

if [ -z "$STY" ]; then
        $cmd $*
else
        # Screen needs to change directory so that
        # relative file names are resolved correctly.
        screen -X chdir $wd

        # Ask screen to run the command
        if [ $cmd == "ssh" ]; then
                screen -X screen -t ""${1##*@}"" $cmd $*
        else
                screen -X screen -t "$cmd $*" $cmd $*
        fi
fi

Затем я установил следующие псевдонимы bash:

vim() {
        scr vim $*
}

man() {
        scr man $*
}

info() {
        scr info $*
}

watch() {
        scr watch $*
}

ssh() {
        scr ssh $*
}

Он открывает новый экран для указанных выше псевдонимов и, если он использует ssh, переименовывает заголовок экрана с именем хоста ssh.

Ура z0mbix


: о. Вы подняли и адаптировали это от меня? gist.github.com/137214
VxJasonxV

Нет, я думаю, что это был один из сотрудников last.fm, который когда-то писал об этом.
z0mbix

4

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

Ctrl-A:width -w 999

Я могу установить screen, чтобы параметр был шире, чем мой терминал, и строки входа в систему lessне переносятся.


10
К вашему сведению, меньшая опция -sскажет не переносить строки. Вы можете использовать Leftи Rightдля прокрутки строк.
MikeyB

4

Возможность смены управляющей клавиши с -это при запуске экрана. Я использую это, чтобы я мог вкладывать сеансы экрана друг в друга. Пример: "screen -e ^ w ^ x" делает ключ управления ctr-w.


2

Одна приятная особенность: вы можете использовать, backtickчтобы получить дополнительную информацию для отображения в заголовке. Например, у меня есть скрипт, который выводит однострочную сводку количества новых писем в разных папках, и у меня он появляется в нижней строке, если мой сеанс экрана вместе с именем хоста с конфигом выглядит так:

backtick 1 15 15 /home/waltermundt/bin/newmail

caption always
caption string "%{.kW}%1` example.com %{.bW}%-w%{.rW}%n %t%{-}%+w %{.gW}%h%{-}"

Ключом является бит% 1`, который относится к выводу задания обратной связи 1.

(Я использую hardstatusв качестве строки заголовка xterm и задаю ее по-другому, поэтому использую captionвместо hardstatus alwayslastline.)


2

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

Существуют сложные способы настройки общего доступа к экрану, включая права доступа и управление именами пользователей. То, что я чаще всего делаю с коллегами, гораздо быстрее и грязнее:

  1. Войдите в машину, о которой идет речь, в новом окне.
  2. Разрешить кому-либо писать в мой терминал: chmod 777 $(tty)
  3. Судо на свой счет: sudo su <username>
  4. Поделитесь своим экраном: screen -x <session>

Это не требует предварительной настройки или обмена паролями.


1

Небольшую шпаргалку, которую я распечатал для себя;

(Примечание: все предшествует Ctrl-A)

A: переименовать окно   
": показать список окон   
d: сеанс освобождения

И screen -D -Rотсоединить и снова подключить текущий сеанс (на случай, если вы каким-то образом потеряете доступ к своему сеансу).

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


1

Это ключевая особенность, но, конечно же, лучше всего Ctrl-A:говорить непосредственно с экраном. : screen -t title ssh hostnameи т.п.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.