# screen

### Запускаем процессы в фоне с помощью screen
#### Установка
Чтобы установить screen, воспользуйтесь менеджером пакетов для вашей системы
```
$ apt install screen
```

#### Работа с сессиями
Попробуем создать новую сессию:
```
$ screen -S my_first_screen_session
```
Будет запущена новая сессия, как если бы вы авторизовались на сервере в обычной tty-консоли. В ней можно запустить какой-то процесс, «свернуть» ее и продолжить работать в консоли.

Чтобы «свернуть» сессию, нажмите Ctrl+A, затем d. Первый шорткат переведет скрин режим принятия команд, а команда d (disconnect) отключится от текущей сессии, оставив ее запущенной в фоне.

Чтобы вернуться к последней подключенной сессии, введите команду
```
$ screen -r
```
Для того, чтобы получить список запущенных сессий от имени текущего пользователя, добавьте ключ -ls или -list
```
$ screen -list
```
Вы можете подключиться к определенной сессии по её имени (идентификатору), добавив его в конце команды
```
$ screen -r Hawk
```
Чтобы завершить определенную сессию, можно отправить в нее выполнение команды «quit»
```
$ screen -S Hawk -X quit
```
#### Запуск процесса в фоне
Чтобы сразу запустить в скрине какой-то процесс, достаточно передать команду на его выполнение при запуске сессии
```
$ screen -S <session_name> <command>
```
Например так:
```
$ screen -S Hawk node index.js
```
Перед вами откроется новый скрин, где будет выполняться переданная команда. Теперь можно свернуть скрин и процесс продолжит выполнение. Ctrl+A, D.

Важно помнить, что при подобном запуске, если процесс завершит свое выполнение (например, вследствие ошибки), то скрин также завершит работу. Если вы хотите иметь возможность посмотреть вывод процесса (узнать текст ошибки) в случае остановки скрипта в скрине, запускайте его в два этапа: сперва создаем сессию, потом запускаем в ней процесс — так вы сможете зайти в скрин с помощью -r

#### Запуск процесса в новой сессии в фоне
Чтобы запустить скрин сразу в свернутом виде, нужно дополнительно передать параметры -dm
```
$ screen -dmS <session_name> <command>
```
Рекомендуется либо заранее проверить, что переданная команда запускается корректно. Иначе вы увидите только сообщение о том, что скрин завершил работу.
```
[screen is terminating]
```
#### Вывод
Screen позволяет использовать терминальные сессии, которые можно «сворачивать». С его помощью можно запускать в фоне ресурсоемкие задачи и процессы, которые должны быть запущены постоянно.