Screen — это эмулятор терминала. Который позволяет запустить несколько сессий например в вашем удаленном терминале, которому нестрашны дисконнекты, т.е. процессы в screen остаются живы после закрытия вашей сессии.
Как пример в нем можно безопасно запустить правила файрвола, если по умолчанию он настроен как закрытый (в момент отработки вы потеряете ssh коннект, но в screen скрипт отработает до конца и при наличии разрешающих правил для вашего подключения в конфигурации firewall вы потеряете управление только на короткое время)
Так же время от времени появляются задачи держать какой-либо процесс запущенным ручным способом (в далекой практике держали терминальную ICQ для мониторинга потребления трафика), с помощью screen это легко сделать.
В системе FreeBSD изначально screen не установлен, установим (два варианта установки на ваш выбор — порты или пакеты)
-
cd /usr/ports/sysutils/screen && make install clen
-
pkg install screen
В Linux где-то scren идет в базовой инсталляции, где-то нет, можно проверить командой:
# whereis screen screen: /usr/local/bin/screen /usr/local/man/man1/screen.1.gz /usr/ports/sysutils/screen
Если на ваша система Linux и в выводе wheries вы не обнаруживаете screen в bin(sbin) каталоге, то установите его с помощью вашего пакетного менеджера (apt, yum, etc)
Несколько полезных команд для работы со screen:
- Запустить screen — screen
- Отключится от screen — Ctrl+a+d
- Убить текущий screen — Ctrl+a+K
- Посмотреть все сессии screen — screen -list
- Подключится к сессии screen — screen -r [имя сессии]
- Подключится к единственной сессии — screen -r
- Создать сессию screen, запустить процесс и не входить в нее —
/usr/local/bin/screen -t MY_SESSION -d -m /home/admins/scripts/MY_SCRIPT.sh
Где:
- -t — Имя сессии (Имя окна)
- -d — Отключится от сессии
- -m — Создать новую сессию
Что позволяет нам запустить процесс в screen при перезагрузке прибегнув к планировщику заданий Cron, просто добавив запись через crontab:
@reboot /usr/local/bin/screen -t MY_SESSION -d -m /home/admins/scripts/MY_SCRIPT.sh