Робота зі скринами.

У Linux команда screen дозволяє створити окремий термінал і запустити в ньому програму у фоновому процесі, який не буде завершено, якщо ви виходите з терміналу.

Один раз створивши скрін і запустивши в ньому програму, ви можете потім у будь-який момент зайти на сервер і відкрити потрібний вам скрин і подивитися на процес виконання.

Встановлення.

sudo apt install screen

Створення скрина.

screen -S screen-name

При цьому вас одразу перекидає всередину скрін.

Вихід зі скрину

ctrl-a d

При цьому спочатку натискається комбінація ctrl-a, відпускається і окремим натисканням клавіша d.

Інші корисні комбінації.

Ctrl-a k - виходить із скрин і видаляє його

Ctrl-a :multiuser on - створює мультисесійний скри, при цьому після комбінації Ctrl-a необхідно набрати :multiuser on

Список усіх команд, доступних після комбінації crl+a

crl+a ?

Перегляд активних скрин.

screen -ls

Підключення до скрин

screen -r screen-name
screen -r screen-PID

При підключенні ми можемо використовувати числовий ідентифікатор процесу скрин або його ім’я.

Іноді, при виведенні списку ми можемо бачити, що до нього вже хтось підключений.

start page

Щоб агресивно увійти та викинути користувача від туди, можна використовувати прапор -D

screen -r -D screen-PID

Але з прапором +x ви можете зайти, не викидаючи іншого користувача.

screen -r -D -x screen-PID

Декілька табів.

Якщо додати новий файл .screenrc домашньої директорії наступне

caption always "%{= kw}%-w%{= BW}%n %t%{-}%+w %-= @%H - %LD %d %LM - %c"

Ми побачимо внизу додаткову панель.

Start page

Перейменувати поточну панель

ctrl+a A і вводимо ім'я

Для того, щоб увімкнути кілька вкладок додамо це до .screenrc

screen -t tab1
screen -t django
screen -t tab3
screen -t tab4

Перемикатися між табами

ctrl+a номер-табу

Ще один варіант оформлення статус-бару.

hardstatus alwayslastline
#hardstatus string '%{= kG}%-Lw%{= kW}%50> %n%f* %t%{= kG}%+Lw%< %{= kG}%-=%c:%s%{-}'
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'

start page

Запуск скринів та команд усередині них без використання .screenrc

Забираємо з .screenrc створення табів

#screen -t tab1
#screen -t tab2
#screen -t tab3
#screen -t tab4

Запускаємо скрін в такий спосіб.

$ screen -AdmS dev -t bash

-A - адаптує розміри під екран

-d -m - запускає у фоновому процесі і НЕ кидає нас усередину

-S - назва сесії

Ця команда запустить сесію з одним табом де запустить bash, якщо цього не зробити, то сесія не стартане.

Запускаємо команди

screen -S dev -X screen -t django ./bin/start_django
screen -S dev -X screen -t celery ./bin/start_celery

Переглянути таби списком і потім вибрати потрібний можна комбінацією Ctrl+A а потім Shift+”

start page