# Лабораторная 2. Консольные мультиплексоры и управление процессами

Цель:<br><br>
Приобрести навыки работы для работы с терминальными мультиплексорами<br><br>
Задачи:<br>
1.	Подключится к виртуальной машине на облачной платформе СПбГУТ
0.	Установить Tmux
0.	Научиться работать с Tmux.
0.	Установить Screen
0.	Научиться работать с Screen.

#### Установка Tmux
Подключиться к виртуальной машине и установить пакет Tmux
```bash
sudo yum install tmux -y
```
#### Работа с tmux
###### Создание сессии в tmux
```bash
tmux
```
###### Создание сессии с названием Test
```bash
tmux new -s Test
```
##### Управление внутри сессии:
Префикс(клавиши с которых начинаются команды) по умолчанию **CTRL + B**
В дальнейшем будет сокращено до **CB**
Сначала нажимается префикс в дальнейшем команда
* **CB** + **С** (сначала прожать префикс, затем c) - Создание нового окна
* **CB** + **,** - Переименовать текущее окно
* **CB** + ***Shift + %*** - разделение экрана по вертикали
* **CB** + ***Shift + "*** - разделение экрана по горизонтали 
* **CB** + ***t*** - Показать в панели текущее время
* **CB** + ***Стрелки*** - переместиться на панель в которую указывает стрелка
* **CB** + ***Зажатая Ctrl + стрелка*** - Изменить размер панели в зависимости от направлении стрелки
* **CB** + ***D*** - Отключится от сессии Tmux, окна запущенные внутри останутся рабочими(свернутыми)
* **CB** + ***X*** - закрыть панель 
* **CB** + ***w*** - посмотреть список открытых окон 
* **CB** + ***l*** - Подключится к прошлому(открытое до этого) окну
* **CB** + ***n*** - Переключится к следующему окну
* **CB** + ***p*** - переключится к прошлому окну 
* **CB** + ***{номер окна}*** - переключится к окну с необходимым окном
* **CB** + ***Page Up*** - проскролить по терминалу выше
* **CB** + ***Page Down*** - проскролить по терминалу ниже
* **CB** + ***s*** - посмотреть список всех открытых сессий и открытых в ней окон
* **CB** + ***f*** - поиск панели по названию



###### Подключится к сессии
```bash
tmux a
```
> подключение в таком случае произойдет к первой созданной сессии

###### Подключение к сессии с названием Test
```bash
tmux a -t Test
```
###### Посмотреть список открытых сессий в tmux
```bash
tmux ls
```
###### Закрыть сессию в Test в Tmux
```bash
tmux kill-session -t Test
```
###### Закрыть все сессии в tmux
```bash
tmux kill-server
```
##### Задание Tmux

**Cоздать 2 сессии**
* 1 сессия - название lab
	* first-window
    * second-window-
	* main
    	* создать 3 панели согласно скриношоту
        [![image-1667236973159.png](https://docs.resds.ru/uploads/images/gallery/2022-10/scaled-1680-/2JFTa91y1rJ2PKL6-image-1667236973159.png)](https://docs.resds.ru/uploads/images/gallery/2022-10/2JFTa91y1rJ2PKL6-image-1667236973159.png)

* 2 сессия - название lab_2
	* session

Проверьте все ли правильно создано, сравнив со скриншотом
[![image-1667237046855.png](https://docs.resds.ru/uploads/images/gallery/2022-10/scaled-1680-/GWAvqkAKyq9WtM6y-image-1667237046855.png)](https://docs.resds.ru/uploads/images/gallery/2022-10/GWAvqkAKyq9WtM6y-image-1667237046855.png)

#### Работа с Screen
##### Установка Screen
```bash
sudo yum install -y screen
```
###### Создание сессии в screen
Создать сессию в screen можно с помощью команды
```bash
screen
```
###### Проверить, что вы зашли в screen можно выполним команду
```bash
echo $TERM
```
В ответе на эту команду у вас появится строка с названием вашего окружения с приставкой ***screen.***

###### Создать новую сессию screen с названием ***newscreen***

```bash
screen -S newscreen
```
######  Посмотреть список запущенных сессий
```bash
screen -ls
```
######  Подключится к работающей сессии screen c *id* 23771
```bash
screen -r 23771
```
##### Управление внутри сессии:
Префикс(клавиши с которых начинаются команды) по умолчанию **CTRL + A**
В дальнейшем будет сокращено до **CB**
Сначала нажимается префикс в дальнейшем команда
* **CB** + **С** (сначала прожать префикс, затем c) - Создание нового окна
* **CB** + **A** - Переименовать текущее окно
* **CB** + ***|*** - разделение экрана по вертикали
* **CB** + ***S*** - разделение экрана по горизонтали 
* **CB** + ***Tab*** - переместиться в следующую область
* **CB** + ***Зажатая стрелка*** - Изменить размер панели в зависимости от направлении стрелки
* **CB** + ***D*** - Отключится от сессии 
* **CB** + ***X*** - Удалить область 
* **CB** + ***Q*** - Закрыть все кроме текущей области
* **CB** + ***x*** - заблокировать до введения пароля
* **CB** + ***n*** - Переключится к следующему окну
* **CB** + ***p*** - переключится к прошлому окну 
* **CB** + ***{номер окна}*** - переключится к окну с необходимым номером
* **CB** + ***?*** - шпаргалка по командам

#### Управления процессами в Linux 

###### Команды для работы с задачами
|Команда | Описание|
|-|--|
|jobs|Список всех задач|
|bg n |Помещает текущее или указанное задание в фоновый режим, где n - ID задачи|
|fg n |Выводит на передний план текущее или указанное задание, где n - ID задачи| 
| CTRL + Z |Останавливает задание на переднем плане и помещает его в фоновый режим|
| CTRL + C | Отправить сигнал о прерывание(завершение) процесса в на переднем плане |
| {command} & | запуск процесса в фоновом режиме|

###### Задание управление процессами
0. Установить `htop`
```bash
sudo yum install -y htop
```

1. Запустите в фоне 5 задач:
    1. htop 
    0. watch ss -tulpan
    0. ping 8.8.8.8
    0. ping 192.168.0.1
    0. ping yandex.ru
0. Посмотрите список всех задач
    ```bash
    jobs
    ```

0. По очереди переместите все задачи на передний план и верните их обратно в фон и снова проверьте список всех задач

0. Убейте все запущенные ранее процессы
0. Выйдите все сеансы в ***screen*** и ***tmux***