вторник, 22 мая 2012 г.

Утилита screen или как запустить процесс в фоне.

Если у вас когда-нибудь отваливалась консоль в процессе компиляции ядра или какой-нибудь толстой программы, то мысль о том, как бы запустить процесс на сервере без привязки к удаленному соединению обязательно вас посещала.

Пожалуй, самое популярное решение - утилита screen. Screen имеет широкий функционал, но даже при использовании по минимуму может принести много пользы. Итак, устанавливаем:

cd /usr/ports/sysutils/screen
make config && make && make install

Утилита готова к использованию:

screen
[Enter]

Всё, вот ваша заскриненая консоль. Можно запустить процесс, к примеру, компиляции, затем нажать Ctrl+a, затем d. И запущенный процесс будет идти в фоне на сервере, без привязки к удаленной консоли и даже если она отвалится работа не остановится. Вернуться в screen можно командой:

screen -r

По идее этого достаточно, но утилита позволяет делать более интересные вещи. Например, можно создать множество виртуальных консолей со своими именами:

screen -S testing

Возврат:

screen -r testing

Посмотреть список виртуальных консолей:

screen -ls

Если скрин умер (в списке показывается с пометкой dead), то его можно убить командой:

screen -wipe

В каждом скрине можно создать дополнительные окна. Вот управляющие клавиши (предварительно следует нажать Ctrl+a):

c - создать окно,
n - следующее окно,
p - предыдущее окно,
" - двойная ковычка, позволяет увидеть список окон и переключиться между ними,
' - одинарная кавычка, открывает поле ввода номера окна для переключения
? - вызвать список всех команд.

Выход из окна - команда exit.

Это лишь малая часть возможностей утилиты screen. С помощью неё можно с ходу запускать программы в свернутом экране, она может сообщать о завершенном процессе, настройки утилиты могут отличаться для каждого пользователя, есть возможность выводить дополнительную информацию в строке состояния и так далее.

0 коммент.:

Отправить комментарий