команда “экран” для эмуляции нескольких сеансов оболочки
предосторожность
Эта статья была опубликована более чем год назад, там, возможно, были события.
Пожалуйста, примите это во внимание.
Сегодня мы посмотрим, как этим пользоваться. screen
.
Недавно мне пришлось запускать команды, которые ожидали очень большую продолжительность на удаленном сервере.. В моей последней статье, например, Я описал, как передавать данные между старым NAS и современным NAS через FTP.. В этом случае я использовал wget
с темой -b
перевод процесса в фоновый режим, чтобы я мог отключить сеанс SSH, и процесс продолжался до конца.
Чтобы перевести даже очень длительный процесс в фоновый режим, просто добавьте &
в конце команды. К сожалению, я очень небрежен и часто ожидаю, что команда быстро вернет вывод., хотя на самом деле я понимаю, что сэкономил бы свое время, поставив проклятый символ внизу команды. пример?
~# updatedb &
Вместо этого мы хотим поговорить о тех случаях, когда мы давали команды одного и того же типа., но потом связь пропала по самым разным причинам? С кем этого не произошло?
К счастью, оно существует screen
который делает это и многое другое… и теперь мы это увидим.
Screen способен управлять бесконечными окнами виртуального терминала за один сеанс.. Это означает, что, запуская несколько команд на удаленном компьютере, нам не придется открывать SSH-соединение для каждой запускаемой команды.. За один сеанс мы имеем безграничные возможности “окна” виртуальные и бесконечные сеансы.
Процессы экрана остаются активными, даже когда мы закрываем основной сеанс., если мы не прекратим их добровольно. Это означает, что в случае случайного отключения процесс продолжится до конца и мы сможем без боли повторно подключиться к прерванной сессии..
Установка
Screen предустановлен во всех основных дистрибутивах.. Проверьте, есть ли он среди ваших посылок..
~# screen --version
Screen version 4.08.00 (GNU) 05-Feb-20
Для архитектур на основе apt
:
~# apt install screen
Для архитектур на основе rpm
:
~# yum install screen
Стартовый экран
Чтобы начать сеанс экрана, просто напишите screen в консоли.
~$ screen
Эта команда создаст сеанс экрана, создаст новое виртуальное окно в сеансе и запустит оболочку в этом окне.
Теперь, когда мы начали сеанс, мы можем найти список команд, набрав: Ctrl + a
?
.
Выход Ed ECCO l':
Command key: ^A Literal ^A: a
break ^B b license , removebuf =
clear C lockscreen ^X x reset Z
colon : log H screen ^C c
copy ^[ [ login L select '
detach ^D d meta a silence _
digraph ^V monitor M split S
displays * next ^@ ^N sp n suspend ^Z z
dumptermcap . number N time ^T t
fit F only Q title A
flow ^F f other ^A vbell ^G
focus ^I pow_break B version v
hardcopy h pow_detach D width W
help ? prev ^H ^P p ^? windows ^W w
history { } quit \ wrap ^R r
info i readbuf < writebuf >
kill K k redisplay ^L l xoff ^S s
lastmsg ^M m remove X xon ^Q q
^] paste .
" windowlist -b
- select -
0 select 0
1 select 1
2 select 2
3 select 3
4 select 4
5 select 5
6 select 6
7 select 7
8 select 8
9 select 9
I login on
O login off
] paste .
| split -v
:kB: focus prev
Дайте сеансу имя
Переименованная сессия удобна, когда нам нужно ее вызвать.. Например, переименование сеанса “wget_debian” взглянув на список активных сеансов, мы сразу узнаем, что в этом сеансе мы запустили загрузку ISO-образа Debian..
~$ screen -S wget_debian
Ознакомьтесь с экранными окнами
При запуске экрана сеанса создается виртуальное окно с оболочкой внутри..
Вы можете иметь несколько окон в сеансе экрана.
Чтобы создать новый тип виртуального окна Ctrl+a
c
и первое число из 0 а 9 будет назначен.
Ниже приведены некоторые из наиболее распространенных команд для управления экранными окнами.:
Ctrl + a
c
Создать новое окноCtrl + a
"
Показать список оконCtrl + a
0
(нуль) Переключиться на окно “0” (заменять “0” с номером, относящимся к нужному окнуCtrl + a
A
Переименуйте текущее окноCtrl + a
S
Разделяет часть экрана по горизонталиCtrl + a
|
Разделяет часть экрана по вертикалиCtrl + a
tab
Переместить фокус на следующий регионCtrl + a
Ctrl + a
Переход от предыдущего окна к следующемуCtrl + a
Q
Закрывает все регионыCtrl + a
X
Закрывает текущий регион
Отключить (отделить) ваш терминал из текущего сеанса
Одно из преимуществ, как уже упоминалось, это возможность продолжать работу, позволяя сеансам экрана работать в фоновом режиме, пока пользователь может работать над чем-то другим.
Ctrl + a
d
Восстановить соединение (резюме) ваш терминал в сеансе
Чтобы восстановить соединение с прерванным сеансом:
~$ screen -r
Если на одном компьютере имеется несколько сеансов, после аргумента также необходимо будет добавить идентификатор сеанса. -r
.
Чтобы найти идентификатор сеанса для повторного подключения, используйте следующую команду:
~$ screen -ls
There are screens on:
13871.pts-3.joe-toshiba (29/11/2022 11:59:39) (Detached)
13836.pts-3.joe-toshiba (29/11/2022 11:59:20) (Detached)
13811.pts-3.joe-toshiba (29/11/2022 11:58:49) (Detached)
3 Sockets in /run/screen/S-joe.
Если мы хотим вернуться к сеансу 13836.pts-3
мы набираем команду:
~$ screen -r 13836
Выводы
Сегодня мы узнали, как использовать screen для создания нескольких окон за один сеанс., перемещаться между окнами, а также отключаться и повторно подключаться к различным сеансам… но оно там еще многое предстоит узнать экран су.
0 Комментарии