Unix Man (Справочное руководство)

         

SHL(1)


SHL(1)

НАЗВАНИЕ


shl - менеджер семейства shell'ов

СИНТАКСИС

shl

ОПИСАНИЕ


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

Текущим называется экземпляр shell'а, который может производить ввод с клавиатуры. Другие экземпляры при попытке ввода с клавиатуры блокируются. Выводимая разными членами семейства информация может перемешиваться. Чтобы блокировать вывод экземпляра, который не является текущим, необходимо для этого члена семейства установить опцию loblk в stty.

Для передачи управления от члена семейства к менеджеру используется символ-переключатель swtch в stty (обычно CTRL+Z). Приглашением менеджера является >>>, что помогает отличить его от члена семейства.

Экземпляр shell'а связан с виртуальным терминалом (/dev/sxt/???). Виртуальным терминалом можно управлять так же, как и обычным, с помощью и . Каждый экземпляр имеет собственный идентификатор группы процессов.


Справка по синтаксису команд shl.

layers [-l] [имя ...]

Для каждого имени вывести имя экземпляра и идентификатор группы процессов. Опция -l добавляет к выводу информацию в стиле . Если аргументы не указаны, выдается информация обо всех существующих экземплярах.

resume [имя]

Сделать экземпляр с указанным именем текущим. Если имя не указано, активируется последний из текущих экземпляров.

toggle

Активировать экземпляр, который был текущим перед последним из текущих.

unblock имя [имя ...]

Не блокировать вывод соответствующих экземпляров, когда они не являются текущими. Это эквивалентно сбросу для экземпляра опции loblk в stty.

quit Закончить работу. Всем экземплярам посылается сигнал освобождения линии.

имя Сделать экземпляр с указанным именем текущим.

ФАЙЛЫ



/dev/sxt/??? Виртуальные терминалы. $SHELL Переменная, содержащая составное имя используемого shell'а (по умолчанию /bin/sh).

СМ. ТАКЖЕ



, .

, в Справочнике программиста. в Справочнике администратора.

СЮРПРИЗЫ



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

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




  1. Если команда запущена с помощью и стандартный ввод, вывод или протокол назначен на виртуальный терминал, например

    nohup who > /dev/sxt/010


  2. Если сигнал освобождения линии игнорируется shell'ом (например, после команды trap '' 1).


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

Если менеджер терминируется сигналом SIGKILL (kill -9), пользователь может оказаться в ситуации, когда для нормального продолжения работы необходимо выйти из системы и снова войти в нее. Кроме того, экземпляры будут продолжать выполняться до тех пор, пока они не будут явно терминированы или не произойдет перезагрузка системы. Пользователи, которые хотят завершить работу с менеджером, не должны использовать SIGKILL.


Содержание раздела