НАЗВАНИЕ
shl - менеджер семейства shell'ов
СИНТАКСИС
shl
ОПИСАНИЕ
Shl позволяет с одного терминала взаимодействовать с
семейством shell'ов. Пользователь управляет членами семейства, или экземплярами, с помощью команд, описанных
ниже.
Текущим называется экземпляр shell'а, который может производить ввод с клавиатуры. Другие экземпляры при попытке ввода с клавиатуры блокируются. Выводимая разными членами семейства информация может перемешиваться. Чтобы блокировать вывод экземпляра, который не является текущим, необходимо для этого члена семейства установить опцию loblk в stty.
Для передачи управления от члена семейства к менеджеру используется символ-переключатель swtch в stty (обычно CTRL+Z). Приглашением менеджера является >>>, что помогает отличить его от члена семейства.
Экземпляр shell'а связан с виртуальным терминалом (/dev/sxt/???). Виртуальным терминалом можно управлять так же, как и обычным, с помощью stty(1) и ioctl(2). Каждый экземпляр имеет собственный идентификатор группы процессов.
ОПРЕДЕЛЕНИЕ
Имя - это последовательность символов, ограниченная
пробелом, табуляцией или переводом строки. Значащими
являются только первые 8 символов. Имена (1) - (7)
нельзя использовать при создании экземпляров: они зарезервированы менеджером как имена по умолчанию. Эти имена можно сокращать до одной цифры.
КОМАНДЫ
Менеджер выполняет следующие команды, которые можно
сокращать до минимальной распознаваемости.
ФАЙЛЫ
/dev/sxt/??? Виртуальные терминалы. $SHELL Переменная, содержащая составное имя используемого shell'а (по умолчанию /bin/sh).
СМ. ТАКЖЕ
sh(1), stty(1).
ioctl(2), signal(2) в Справочнике программиста.
sxt(7) в Справочнике администратора.
СЮРПРИЗЫ
При переключении между экземплярами опережающий ввод
обрабатывается не всегда так, как можно ожидать. До тех
пор, пока не выполнится реальное переключение и пользователь не увидит соответствующее приглашение, весь опережающий ввод направляется текущему экземпляру. Не видя
приглашения, нельзя гарантировать, что ввод попадет по
назначению.
Завершение работы менеджера вызывает посылку сигнала освобождения линии всем процессам всех групп для каждого существующего экземпляра. Обычно это приводит к завершению всех экземпляров и освобождению всех виртуальных терминалов, которые могут теперь использоваться другими пользователями. Существует, однако, два случая, когда после завершения работы с менеджером виртуальные терминалы не освобождаются:
nohup who > /dev/sxt/010
В обоих случаях виртуальный терминал освобождается только после завершения процесса, его использующего.
Если менеджер терминируется сигналом SIGKILL (kill -9), пользователь может оказаться в ситуации, когда для нормального продолжения работы необходимо выйти из системы и снова войти в нее. Кроме того, экземпляры будут продолжать выполняться до тех пор, пока они не будут явно терминированы или не произойдет перезагрузка системы. Пользователи, которые хотят завершить работу с менеджером, не должны использовать SIGKILL.