Перейти до основного вмісту
Головна
нотатки кодера

Navigation

  • Головна
  • Про мене
  • Портфоліо
User account menu
  • Вхід

Рядок навіґації

  1. Головна

screen — кращий друг адміна

від vetal, 23 березня, 2011
Категорія
Адміністрування
  • Щоб додати коментар, увійдіть або зареєструйтесь

Однією з самих перших утиліт, котрі я ставлю на щойно піднятий сервер є screen. 

Ця маленька утиліта є незамінною в багатьох випадках, особливо, якщо це стосується роботи з віддаленими хостами. Основною задачою screen, як видно з її назви, є створення та керування багатьма віртуальними терміналами в рамках однієї login-сесії. Однак, най більш чудовою є можливість відключення від поточної сесії та підключення до неї через будь-який час. Ця особливість добре зарекомендувала себе при роботі з серверами по низько швидкісним і малонадійним каналам зв'язку, таких як GPRS чи PPP. 

Що ж такого корисного в цій особливості? Я думаю, що ті, хто хочаб раз намагався виконати тривалий за часом процес компіляції, наприклад перезібрати "світ" на віддаленому сервері з FreeBSD, мене зрозуміють. Розірвався канал — починай все з початку :) . Після запуску screen одразу створює 0-е вікно, запускає в ньому shell і поміщає туди користувача. Всі наступні операції виконуються за допомогою клавіатурних комбінацій, котрі починаються з «Ctrl-a». 

Як вже було сказано вище, для мене самою затребуваною можливістю є відключення від поточної сесії. Виконується ця процедура за допомогою комбінації «Ctrl-a d». Після цього можна сміливо закривати ssh-сесію та займатися іншими справами. Причепитися знову до запущеної сесії можна за допомогою ключа -r. Якщо у нас запущено декілька сесії screen на одному хосту, то додатково потрібно вказати PID запущеного screen-у, в який ми хочемо потрапити. 

server ~ # screen -r 
There are several suitable screens on: 
31624.pts-0.server (Detached) 
31047.pts-13.server (Detached) 
Type "screen [-d] -r [pid.]tty.host" to resume one of them. 

Інколи, якщо відключення від сесії відбулось не вручну, а з-за розриву з'єднання, виникає наступна ситуація: 

server ~ # screen -r 
There is a screen on: 31047.pts-13.server (Attached) 
There is no screen to be resumed. 

Цю проблему легко перемогти, використовуючи для запуску два ключі -d -r. Значно рідше я використовую можливість роботи з віртуальними екранами. 

Ось набір команд для проведення операцій над ними: 

Ctrl-a c Створити нове вікно 

Ctrl-a space Відкрити наступне вікно 

Ctrl-a backspace чи Ctrl-a del Відкрити попереднє вікно 

Ctrl-a 0-9 Вибір вікна 0-9 

Ctrl-a Ctrl-a Переключення між поточним чи попереднім вікном 

Ctrl-a w Вивести список вікон. Поточне вікно буде відмічено зірочкою (*) 

Ctrl-a k Закрити поточне вікно. Або просто вийти з оболонки, запущеного в цьому вікні. 

Ще однією фічею screen-a є можливість виконання операції копіювання/вставки між вікнами. Для включення режиму копіювання служить команда «Ctrl-a [» В режимі копіювання, курсор пересувається за допомогою стрілок, або за допомогою клавіш літер h,j,k,l. Початок блоку, що має бути скопійований та його кінець відмічається за допомогою пробілу. Вставка скопійованого блоку виконується за допомогою команди «Ctrl-a ]». 

Ну і наостанок варто згадати про коротку встроєну допомогу, котра викликається за допомогою комбінації «Ctrl-a ?» 

Крім того, вищеописаними командами можливості screen-у не обмежуються. Подробиці — в man 1 screen ;)

screen
utility
*nix

Категорії

  • Історії
  • Адміністрування
  • Поради
  • Програмування

Останні матеріали

  • SCP з докачуванням
    1 рік 9 місяців ago
  • Таблиці IPFW
    1 рік 11 місяців ago
  • Як видалити порт FreeBSD з залежностями
    1 рік 11 місяців ago
  • screen — кращий друг адміна
    1 рік 11 місяців ago
  • gd-png: fatal libpng error
    1 рік 11 місяців ago
  • OpenCart облік прибутку
    1 рік 11 місяців ago
  • Fail2Ban: Постійний бан
    2 роки ago
  • Як отримати список змінених файлів між ревізіями
    7 років ago
  • Що робити якщо svn: database disk image is malformed
    8 років ago
  • Як виправити пошкоджений /etc/sudoers файл
    9 років 1 місяць ago

1980-2025 © All rights reserved. vetal.insky.one // нотатки кодера.