Россия, Томск, ТУСУР, 2010 |
Печать в Solaris
Настройка клиента печати
Клиент печати настраивается сходным образом: в файле /etc/printers.conf на клиенте печати будет указано, что принтер по умолчанию находится на компьютере, который выполняет роль сервера печати. В настройках клиента печати не обязательно определять права доступа к удаленному принтеру: это уже сделано в настройках сервера печати. Таким образом, минимальный файл /etc/printers.conf на клиенте печати, чьи задания на печать должны отправляться принтеру hplj на компьютере с именем printserver, будет выглядеть так:
_default | lp: :use=printserver: :bsdaddr=printserver,hplj
В этом файле, как видим, указано, что принтером по умолчанию для данного компьютера будет принтер hplj на компьютере printserver. В файле /etc/printers.conf на компьютере printserver должен быть определен принтер hplj, т.е. должно присутствовать описание вида:
hplj:\ :use=/dev/lp0:\ bsdaddr=printserver,hplj,Solaris:
Это описание появляется при добавлении принтера в систему сервера печати. Пример такого добавления с помощью lpadmin показан выше.
Служба печати на сервере печати
Для успешной обработки заданий на печать недостаточно просто указать свойства и имена принтеров. Потребуется еще и обеспечить работу программ, которые формируют задание на печать, отправляют его по месту назначения (к выбранному принтеру ) и обеспечивают успешное выполнение задания.
По пути от приложения, инициирующего печать, до принтера задание на печать должно быть обработано несколькими программами: программой lp (или lpr ) - для постановки в очередь на печать, lpsched - для обработки очереди, возможно, программами inetd и in.lpd - в случае, если задание отправлено на удаленную машину.
Рассмотрим наиболее обычный вариант печати - с клиентской машины командой lp на удаленный принтер, который доступен через компьютер printbox.
Мы распечатываем текстовый файл data.txt с помощью команды
lp -d printbox:hplj data.txt
Команда lpr в Solaris - это символическая ссылка на команду lp, поэтому что вызывать - lpr или lp - безразлично, будет вызвана одна и та же программа. Название lpr сохранено ради совместимости с другими системами UNIX.
Задание на печать формируется командой lp и отправляется на компьютер printbox. Там его должен ждать демон inetd. Как только задание добирается до порта 515 на компьютере printbox, демон inetd на нем запускает программу in.lpd (согласно записи о службе printer в /etc/inetd.conf) и передает ей пришедшее задание. Программа in.lpd помещает задание в область буферизации (/var/spool/lp/*) и сообщает программе lpsched, что ей пришло задание. Дальнейшая обработка задания ложится на службу печати, т.е. на lpsched. Именно эта программа запускает интерфейсную программу принтера, которая уже непосредственно взаимодействует с принтером.
Такая схема, показанная на рис. 22.1, иллюстрирует взаимодействие клиента и сервера печати при условии, что версия системы клиента печати не ниже Solaris 2.0, а версия системы сервера печати - не ниже Solaris 2.6.
В случае использования более старых систем Solaris схема взаимодействия будет более сложной - при отправке задания на печать на удаленный принтер будут выполнены следующие действия:
Рис. 22.1. Взаимодействие подсистем печати на компьютере - клиенте Solaris 2.6 и сервере печати Solaris 8
- программа lp положит задание в локальную область буферизации (spool) на клиенте печати и передаст запрос локальному демону lpsched ;
- локальный демон lpsched обратится к локальному демону lpNet, который запустит дочерний процесс lpNet, а тот передаст задание на сервер печати ;
- на сервере печати демон listen передаст запрос местному демону lpNet, который, в свою очередь, запустит дочерний процесс;
- этот дочерний процесс lpNet на сервере печати положит задание в область буферизации на сервере печати и передаст задание lpsched ;
- lpsched на сервере печати отправит задание на принтер.
Это иллюстрирует рис. 22.2.
Рисунки взяты из Методического пособия компании Sun Microsystems "Системное администрирование ОС Solaris 8, часть 1".