Работа со скринами.
Основы работы с Linux. -> Работа со скринами.
Работа со скринами.
В 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
При подключении мы можем использовать числовой идентификатор процесса скрина или его имя.
Иногда, при выводе списка мы можем видеть что к нему уже кто то подключен.
Чтобы агресивно войти и выкинуть пользователя от туда можно использовать флаг -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"
То мы увидим внизу дополнительную панель.
Переименовать текущую панель
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}]'
Запуск скринов и команд внутри них без использования .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+”