Служба печати UNIX - это набор утилит, с помощью которых системный администратор (или администратор печати) настраивает, отслеживает и управляет принтерами системы.
Служба печати выполняет следующие функции:
При получении отправленного пользователем файла, служба печати присваивает запросу (заданию печати) уникальное имя, называемое также ИД запроса.
ИД запроса состоит из имени принтера и уникального номера, идентифицирующего файл. С помощью ИД запроса осуществляется просмотр состояния задания печати и отмена задания. Служба печати сохраняет все запросы на печать в протоколе запросов.
Задание печати буферизуется вместе с другими заданиями печати, отправленными на принтер. Все задания печати выполняются по очереди. Набор ожидающих заданий печати называется очередью печати.
Каждому принтеру соответствует очередь печати; задания в очереди можно приостанавливать, перемещать и переносить в другую очередь.
На следующем рисунке представлен процесс обработки запроса на печать.
Рис. 6-1. Краткие сведения об обработке запроса на печать

Все задания печати отправляются в программу демон буферизации (фоновую программу), создающую записи обо всех заданиях. (Эта информация хранится в протоколе запроса.) Демон создается при запуске службы печати. Демон буферизации также отвечает за мониторинг состояния принтеров и фильтров; при завершении печати задания, демон начинает печать следующего (если оно занесено в очередь).
Для настройки службы печати необходимо изменить или заменить некоторые из элементов, показанных на рисунке Краткие сведения об обработке запроса на печать (номера пунктов совпадают с номерами на рисунке).
Например, если в базе данных terminfo указано, что длина страницы, заданная пользователем, не поддерживается данным принтером, демон буферизации аннулирует запрос. Если же информация из базы данных подтверждает возможность печати с указанными параметрами, то они и используются интерфейсной программой при инициализации принтера.
Для каждого задания печати служба печати создает два файла, описывающих запрос на печать, и помещает их в каталоги /usr/spool/lp/temp и /usr/spool/lp/requests. Информация разбивается на две части для того, чтобы конфиденциальная информация хранилась в каталоге /usr/spool/lp/requests. Пользователь, создавший задание, получает права доступа к файлу из каталога /usr/spool/lp/temp; администратор печати (пользователь root) получает права доступа к файлу в каталоге /usr/spool/lp/requests.
Файлы остаются в этих каталогах до тех пор, пока задания находятся в очереди. По завершению печати задания информация из двух файлов объединяется и добавляется в протокол запросов /usr/spool/lp/logs/requests .
Структура протокола запросов такова, что извлечение информации выполняется с помощью команд оболочки UNIX. Запросы перечислены в порядке их выполнения, строки с запросами разделяются строками с ИД запросов. Все строки, следующие за строкой-разделителем отмечены одиночными символами - кодами протокола запросов, определяющими тип информации, находящейся в строке. Код отделяется от данных пробелом. Коды протокола описаны в строке, следующей за образцом записи.
Ниже приведен образец записи протокола запросов на печать:
= ps-717, uid 1532, gid 18, size 7872, Tue May 10 14:43:10 1994 z ps C 1 D ps F /usr/spool/lp/temp/717-1 P 20 t simple U hanna s 0x0010
| Буква | Содержимое строки |
|---|---|
| = | В строке-разделителе перечислены (разделенные запятой) ИД запроса, ИД пользователя (uid) и ИД группы (gid) пользователя, создавшего запрос, количество байт в исходном файле (size), а также дата и время занесения запроса в очередь. |
| C | Число печатаемых копий. |
| D | Описание класса, описание принтера или слово any. |
| F | Имя файла в каталоге /usr/spool/lp/temp. Эта строка повторяется для каждого печатаемого файла; файлы печатаются в порядке занесения в очередь. |
| f | Имя используемой формы (если форма применяется). |
| H | Тип особой обработки:
|
| N | Способ извещения пользователя о завершении печати (если это
возможно):
|
| O | Все опции -o, указанные в команде lp. |
| P | Приоритет запроса на печать. |
| p | Список печатаемых страниц. |
| r | Все опции -r, указанные в команде lp, сообщающие о запросе пользователя на прямую обработку файла. |
| S | Используемый набор символов. |
| s | Результат работы, преобразованный в набор бит в шестнадцатеричной
форме. Программа буферизации использует следующие биты:
|
| T | Заголовок баннера. |
| t | Тип содержимого файла. |
| U | Имя пользователя, создавшего запрос на печать. |
| x | Медленный фильтр. |
| Y | Список особых режимов фильтров, используемых при печати запроса. |
| y | Быстрый фильтр. |
| z | Принтер, используемый для выполнения запроса. Эта строка отличается от строки D в случае, когда запрос был занесен в очередь для принтера или класса принтеров any или администратор печати передал выполнение запроса другому принтеру. |
В общем, для управления службой печати необходимо пользоваться Web-администратором системы. Информация по управлению системой с помощью командной строки приведена в следующих разделах:
| Команда | Описание |
|---|---|
| cancel | Отменяет запрос на печать файла |
| lp | Отправляет файл или файлы на принтер |
| lpstat | Создает отчет о состоянии службы печати |
Администратор может предоставить пользователям права на включение и выключение принтера для того, чтобы при возникновении неполадки пользователь мог выключить принтер без вмешательства администратора печати. (Однако, в вашей среде печати предоставление этих прав может быть нецелесообразным.)
Таблица команд администратора службы печати содержит команды, доступные администратору печати. Команды администратора доступны пользователю root.
Команды администратора службы печати расположены в каталоге /usr/lib. При частом использовании этих команд рекомендуется добавить строку /usr/lib в переменную PATH.
| Команда | Описание |
|---|---|
| accept
reject | Разрешает занесение заданий в очередь указанной цели
Запрещает занесение заданий в очередь указанной цели |
| cancel | Отменяет запросы к построчному принтеру. |
| enable
disable | Активация принтеров с именами |
| lpadmin | Установка или изменение конфигурации принтера |
| lpc | Предоставляет управление построчным принтером (BSD) |
| lpfilter | Установка или изменение описаний фильтров |
| lpforms | Установка или изменение форм печати (для монтирования формы применяется команда /usr/sbin/lpadmin) |
| lpmove | Передает вывод запросов с одной цели на другую |
| lpsched
lpshut | Запускает службу печати
Останавливает службу печати |
| lpsystem | Регистрирует удаленные системы в службе печати |
| lpusers | Устанавливает или изменяет приоритет по умолчанию и ограничения приоритетов, запрашиваемых пользователями службы печати |
Команды accept, reject, cancel, enable, disable и lpadmin существуют также в Web-администраторе системы. Для их выполнения необходимо запустить Web-администратор системы, а затем выбрать в Оглавлении пункт Принтеры.