Як використовувати екранну команду Linux

За допомогою екранної команди Linux ви можете перемістити запущені термінальні програми у фоновий режим і перетягнути їх вперед, коли захочете їх побачити. Він також підтримує дисплеї з розділеним екраном і працює через SSH-з’єднання, навіть після відключення та повторного підключення!

Що таке екранна команда?

Екранна команда: a термінальний мультиплексор, і він наповнений варіантами. Сказати, що він може багато чого, — це не сказати нічого. Сторінка людини налічує понад 4100 рядків.

Нижче наведено найпоширеніші випадки, коли ви використовуєте команду screen, і ми розглянемо їх далі в цій статті:

Стандартна операція полягає в тому, щоб створити нове вікно з оболонкою, запустити команду, а потім перемістити вікно у фоновий режим (так зване «від’єднання»). Якщо ви хочете побачити, як працює ваш процес, ви можете знову витягнути вікно на передній план («знову приєднати») і використовувати його знову. Це чудово підходить для довгих процесів, які ви не хочете випадково завершити, закривши вікно терміналу.
Після запуску сеансу екрана ви можете створювати нові вікна та запускати в них інші процеси. Ви можете легко переходити між вікнами, щоб відстежувати їх прогрес. Ви також можете розділити вікно термінала на вертикальні або горизонтальні області та відобразити різні вікна екрана в одному вікні.
Ви можете підключитися до віддаленої машини, розпочати екранний сеанс і запустити процес. Ви можете відключитися від віддаленого хоста, знову підключитися, і ваш процес все одно буде виконуватися.
Ви можете поділитися сеансом екрана між двома різними з’єднаннями SSH, щоб двоє людей могли бачити одне й те саме в режимі реального часу.

Екран встановлення

Щоб встановити screen на ubuntu, скористайтеся цією командою:

sudo apt-get install screen

The

Щоб встановити екран на Manjaro, скористайтеся такою командою:

sudo pacman -Sy screen

The

У Fedora ви вводите наступне:

sudo dnf install screen

The

Початок роботи з екраном

Щоб почати екран, просто введіть його, як показано нижче, і натисніть Enter:

screen

The

Ви побачите сторінку з інформацією про ліцензію. Ви можете натиснути пробіл, щоб прочитати другу сторінку, або Enter, щоб повернутися до командного рядка.

The

Ви залишилися в командному рядку, і, здається, нічого особливого не сталося. Однак зараз ви запускаєте оболонку всередині емулятора мультиплексованого терміналу. Чому це добре? Що ж, давайте почнемо процес, який займе багато часу. Ми завантажимо вихідний код останнього ядра Linux і перенаправимо його у файл з назвою latest_kernel.zip.

Для цього вводимо наступне:

curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz > latest_kernel.zip

The latest_kernel.zip” у вікні терміналу.’ width=”646″ height=”77″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);” onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”>

Наше завантаження починається, і вихід curl показує нам прогрес.

Вихід з latest_kernel.zip” у вікні терміналу.’ width=”646″ height=”247″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);” onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”>

Ми не можемо показати вам зображення наступного біта, оскільки це послідовність натискань клавіш. Ви вводите Ctrl+A, відпускаєте ці клавіші, а потім натискаєте d, щоб від’єднати екран.

  Як створити тунель SSH в Linux

Процес завантаження все ще виконується, але вікно із завантаженням видалено. Ви повернетеся до вікна терміналу, з якого запустили сеанс екрана. Повідомлення повідомляє про те, що екранне вікно з позначкою 23167.pts-0.wdzwdz було від’єднано.

Вам потрібен номер із початку назви вікна, щоб повторно приєднати його. Якщо ви забудете його, ви завжди можете використовувати параметр -ls (список), як показано нижче, щоб отримати список відокремлених вікон:

screen -ls

The

Коли ви будете готові, ви можете використовувати параметр -r (повторне підключення) і номер сеансу, щоб повторно приєднати його, наприклад:

screen -r 23167

The

Вікно, яке працювало у фоновому режимі, тепер повертається у вікно терміналу, як ніби воно ніколи не виходило.

Якщо це процес, який збирається завершити до свого завершення, він зрештою завершиться. Якщо це безперервний процес, ви захочете його припинити. У будь-якому випадку, коли процес закінчиться, ви можете ввести exit, щоб вийти з екрана. Крім того, ви можете натиснути Ctrl+A, а потім K, щоб примусово закрити вікно.

Введіть таку команду:

exit

The

Ви повернетеся до попереднього вікна терміналу, де все ще відображатиметься команда, яку ви використали для повторного приєднання вікна. Оскільки ми закрили наше єдине відокремлене вікно, ми отримуємо повідомлення про те, що екран завершується.

The

Використання іменованих екранних сеансів

Ви можете використовувати параметр -S (назва сеансу), щоб назвати сеанс екрана. Якщо ви використовуєте ім’я, що запам’ятовується, а не числовий ідентифікатор сеансу, зручніше повторно під’єднатися до сеансу. Ми вводимо наступне, щоб назвати нашу сесію «великим файлом»:

screen -S bigfile

The

Коли екран запускає наш сеанс, ми бачимо порожнє вікно з командним рядком. Ми збираємося завантажити великий файл, тому ми можемо використовувати тривалий процес як приклад.

Набираємо наступне:

curl http://ipv4.download.thinkbroadband.com/1GB.zip > bigfile.zip

The bigfile.zip” у вікні терміналу.’ width=”646″ height=”77″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);” onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”>

Коли почнеться завантаження, ми натискаємо Ctrl+A, а потім натискаємо D, щоб від’єднати сеанс. Ми вводимо наступне, щоб використовувати параметр -ls (список) з екраном, щоб побачити деталі нашого відокремленого сеансу:

screen -ls

The

За числовим ідентифікатором (23266) ми бачимо назву нашого сеансу (великий файл). Ми вводимо наступне, включаючи назву сеансу, щоб повторно приєднати його:

screen -r bigfile

The

Ми знову під’єдналися до нашого вікна завантаження і бачимо, що довге завантаження все ще триває.

Коли завантаження завершиться, ми вводимо exit, щоб закрити вікно сеансу.

Використання екрана з кількома вікнами

Поки що ми використовували екран для розміщення окремого процесу у фоновому режимі в окремому вікні. Однак екран здатний зробити набагато більше, ніж це. Далі ми запустимо кілька процесів, які дозволять нам відстежувати деякі аспекти нашого комп’ютера.

Ми вводимо наступне, щоб почати екранний сеанс під назвою «монітор»:

screen -S monitor

The

У командному рядку в нашому новому сеансі вікна ми запустимо dmesg і скористаємося параметрами -H (доступний для читання) і -w (чекати нових повідомлень). Це буде відображати повідомлення буфера ядра; нові повідомлення з’являтимуться в міру їх появи.

  Як встановити Debian Linux

Набираємо наступне:

dmesg -H -w

The

З’являться наявні повідомлення. Ми не повертаємося до командного рядка, оскільки dmseg чекає нових повідомлень і відображатиме їх у міру їх надходження.

The

Ми хочемо запустити іншу програму, тому нам потрібно нове вікно екрана. Ми натискаємо Ctrl+A, а потім C, щоб створити нове вікно. Ми збираємося використовувати годинник багаторазово бігати vmstat, тож ми отримуємо часто оновлюваний файл відображення використання віртуальної пам’яті на нашому комп’ютері.

У новому командному рядку ми вводимо наступне:

watch vmstat

The

Вивід vmstat з’являється та оновлюється кожні дві секунди.

The

Зараз запущено два наші процеси. Щоб переходити між вікнами екрана, натискайте Ctrl+A та номер вікна. Перше, яке ми створили, це вікно нуль (0), наступне вікно 1 і так далі. Щоб перейти до першого вікна (dmesg), ми натискаємо Ctrl+A і 0.

Повертаючись до

Якщо ми натиснемо Ctrl+A і 1, ми повернемося до вікна vmstat.

Повертаючись до

Це дуже класно! Ми можемо натиснути Ctrl+A, а потім D, щоб відключитися від цього сеансу; ми можемо повторно приєднатися пізніше. Обидва сеанси триватимуть. Знову ж таки, щоб перемикатися між вікнами, ми натискаємо Ctrl+A і номер (0 або 1) вікна, до якого ми хочемо переключитися.

Переходимо до наступного кроку та переглядаємо обидва екрани в одному вікні. Коли ви це зробите, ви розтягнете вікно термінала до розміру, який робить цей крок корисним. Наші приклади обмежені розміром наших скріншотів, тому наші вікна будуть виглядати трохи тісними.

Для цього натискаємо Ctrl+A, а потім Shift+S (необхідна велика буква «S»).

Вікно розбивається на дві «області».

А

Верхня область все ще відображає vmstat, а нижня область порожня. Курсор виділений на скріншоті нижче. Щоб перемістити його в нижню область, ми натискаємо Ctrl+A, а потім Tab.

А

Курсор переміщається в нижню область, яка насправді є просто порожнім простором. Це не оболонка, тому ми не можемо нічого ввести в неї. Щоб отримати корисне відображення, ми натискаємо Ctrl+A, а потім натискаємо «0», щоб відобразити вікно dmesg у цій області.

The

Це дає нам обидва живі результати в одному розділеному вікні. Якщо ми натиснемо Ctrl+A і D, щоб від’єднати вікно, а потім знову приєднати його, ми втратимо вигляд розділеної панелі. Однак ми можемо відновити його за допомогою таких комбінацій клавіш:

Ctrl+A, S: розділити вікно по горизонталі.
Ctrl+A, Tab: перехід до нижньої області.
Ctrl+A, 0: Відображати нульове вікно в нижній області.

Ми можемо зробити ще крок далі. Тепер ми розділимо нижню панель по вертикалі та додамо третій процес на дисплей. Розташувавши курсор у нижній області, ми натискаємо Ctrl+A і C, щоб створити нове вікно з оболонкою. Нижня область відображає нове вікно та дає нам командний рядок.

А

Далі ми запускаємо команду df для перевірити використання файлової системи:

df

А

Коли ми бачимо, що df працює, ми натискаємо Ctrl+A і символ вертикальної лінії (|). Це розділяє нижню область по вертикалі. Ми натискаємо Ctrl+A та Tab, щоб перейти до нової області. Далі ми натискаємо Ctrl+A і 0, щоб відобразити вікно dmesg.

  Як синхронізувати Google Drive на Linux за допомогою OverGrive

А

Ви також можете переходити від регіону до регіону та додавати більше вертикальних або горизонтальних розділів. Ось ще кілька корисних комбінацій клавіш:

Ctrl+A: перехід назад і вперед між поточним і попереднім регіонами.
Ctrl+A, Q: закрити всі регіони, крім поточного.
Ctrl+A, X: закрити поточну область.

Використання екрана через SSH

За допомогою екрана ви можете розпочати сеанс вікна, від’єднати його, щоб воно все ще працювало у фоновому режимі, вийти з системи або знову ввійти, а також знову під’єднати сеанс.

Давайте створимо SSH підключення до нашого комп’ютера з іншого за допомогою команди ssh. Ми повинні вказати ім’я облікового запису, з яким ми збираємося під’єднатися, і адресу віддаленого комп’ютера.

Для нашого прикладу ми вводимо наступне:

ssh [email protected]

The

Після автентифікації на віддаленому комп’ютері та входу в систему ми вводимо наступне, щоб почати екранний сеанс під назвою «ssh-geek»:

screen -S ssh-geek

The

Для демонстраційних цілей ми запустимо зверху у вікні екрана, але ви можете почати будь-який тривалий або нескінченний процес.

Набираємо наступне:

top

The

Після того, як у вікні запущено top, ми натискаємо Ctrl+A, а потім D, щоб від’єднати вікно.

The

Ми повернулися до початкового вікна віддаленого терміналу.

Якщо ми введемо exit, як показано нижче, це від’єднає сеанс SSH, і ми знову повернемося на наш локальний комп’ютер:

exit

The

Для повторного підключення ми вводимо наступне:

ssh [email protected]

The

Після повторного підключення та входу в систему ми можемо ввести наступне, щоб повторно підключити сеанс екрана:

screen -r ssh-geek

The

Тепер ми знову під’єдналися до нашого все ще працюючого екземпляра top.

The

Це чудово, якщо ви хочете почати процес на одній машині, а потім продовжити на іншому місці, де ви зупинилися.

Спільний доступ до екранного сеансу

Ви також можете використовувати екранний сеанс, щоб дозволити двом людям бачити одне вікно та взаємодіяти з ним. Скажімо, хтось, хто використовує Fedora на своєму комп’ютері, хоче підключитися до нашого сервера Ubuntu.

Він надрукував би наступне:

ssh [email protected]

The

Після підключення він починає екранний сеанс під назвою «ssh-geek», використовуючи параметр -S (назва сеансу). Він також використовує параметри -d (від’єднання) та –m (примусове створення), щоб створити новий сеанс екрана, який уже від’єднано.

Він друкує наступне:

screen -d -m -S ssh-geek

The

Він вводить наступне, використовуючи параметр -X (багатоекранний режим), щоб приєднати сеанс:

screen -X ssh-geek

The

На комп’ютері Manjaro інша людина підключається до комп’ютера Ubuntu з такими ж обліковими даними, як показано нижче:

ssh [email protected]

The

Після підключення вона вводить команду screen і використовує параметр -X (багатоекранний режим), щоб приєднатися до того самого сеансу вікна, наприклад:

screen -X ssh-geek

The

Тепер все, що набере одна людина, побачить інший. Наприклад, коли одна особа видає команду дати, вони обидва бачать її в тому вигляді, як вона введена, а також її вихід.

The

Вихід з

Зараз обидва користувачі діляться сеансом екрана, який виконується на віддаленому комп’ютері Ubuntu.

Для частини програмного забезпечення, яке вперше побачило світ у 1987 році, екран все ще має хорошу продуктивність. Знайомство з ним буде корисно проведеним часом!