Таблица
7.1.
Буква |
Содержимое строки |
= |
Это отделяющая строка, содержащая id запроса id пользователя и групповой id пользователя, полное количество байтов в исходных (неотфильтрованных) файлах, а также время постановки запроса в очередь. Эти элементы отделяются друг от друга запятыми и расположены следующим образом: id пользователя, групповой id, размер файла и предваряются словом uid, gid и size соответственно |
C |
Количество распечатываемых копий |
D |
Пункт назначения принтера или класса принтеров или слово any
|
F |
Имя распечатываемого файла. Эта строка повторя- ется для каждого распечатываемого файла |
f |
Имя используемого формата |
H |
Тип специальной обработки, называемой по буквам ( resume, hold, immediate ) |
N |
Тип предупреждения, используемый, когда запрос на распечатку успешно выполнен. Это буква M, если пользователь уведомляется почтой, или W - если пользователь уведомляется сообщением на терминале |
O |
Параметр -o
|
p |
Приоритет запроса
|
P |
Список распечатываемых страниц |
r |
Присутствует, если пользователь запросил команду LP с параметром -r
|
S |
Используемый набор символов |
s |
Выход запроса в виде сочетания индивидуальных битов, выраженных в шестнадцатиричном виде. Несколько битов используется программой Spooler. Наиболее важные биты имеют значение: 0x0004 - медленная фильтрация успешно завершена 0x0010 - распечатка завершена успешно 0x0040 - запрос отменен 0x0100 - запрос не отфильтрован или не распечатан |
T |
Заголовок размещен на заглавной странице |
t |
Тип содержимого, находящегося в файла(ах) |
U |
Имя пользователя, выдавшего запрос на распечатку |
X |
Медленный фильтр, используемый для запроса |
Y |
Список специальных режимов, задаваемых фильтрам, используемым для распечатки запроса |
y |
Быстрый фильтр, используемый для запроса |
z |
Принтер, используемый для распечатки запроса. Он будет отличаться от пункта назначения, если запрос ставится в очередь на любой принтер или класс принтеров, или если запрос был перемещен в другой пункт назначения администратором LP |
Хотя LP отвечает большей части требований к распечатке, существуют принтеры, которые не совсем соответствуют способу обработки принтеров сервисом LP.
Вы можете осуществить настройку LP несколькими способами. В этом подразделе рассказывается как вы можете:
- настроить характеристики портов принтеров;
- настроить базу данных Terminfo ;
- написать программу интерфейса.
7.12. Настройка сервиса принтера
7.12.1. Как LP обрабатывает файл запроса
Каждый запрос отсылается в spooling daemon, который следит за всеми запросами. Следящий процесс (демон) создается, когда вы запускаете сервис принтера LP. Этот процесс системы UNIX также отвечает за слежением за состоянием принтеров и медленных фильтров; когда принтер заканчивает распечатку файла пользователя, демон запустит на нем распечатку другого запроса, если он есть в очереди.
Вы можете настроить сервис принтера, если настроите или замените некоторые из элементов процесса.
- Для большей части принтеров вам нужно изменить конфигурацию, хранящуюся на диске. Некоторые из наиболее зависимых от конфигурации принтера данные - это характеристики порта принтера: скорость передачи, контроль четности и т.д.
- Для принтеров, которые не представлены в базе данных Terminfo, вы можете добавить новый элемент, который описывает возможности принтера. Эта база данных позволяет: просматривать запросы, чтобы гарантировать, что те, которые приняты к распечатке могут быть обработаны требуемым принтером; устанавливать принтеры в состояние, когда у него будет готовность распечатать запрос. Например, если база данных Terminfo показывает, что принтер не в состоянии установить длину страницы, запрошенную пользователем, следящий процесс отвергнет этот запрос. С другой стороны, если она показывает, что принтер может это сделать, то та же самая информация будет использована программой интерфейса для инициации принтера.
- Для особенно трудных в работе принтеров или когда вы хотите добавить средства, не обеспеченные поставленным сервисом LP, вы можете изменить стандартную программу интерфейса. Эта программа отвечает за управление принтером: она распечатывает заглавную страницу, инициирует принтер, а также вызывает фильтр для отсылки копий файлов пользователя на принтер.
- Чтобы обеспечить связь прикладных программ, используемых в вашей системе, и принтеров, вы можете добавить быстрые и медленные фильтры. Каждый тип фильтра может преобразовывать один набор последовательности переключения кода в другой, а также может обеспечить специальную установку, прервав режимы распечатки, запрошенные пользователем. Медленные фильтры функционируют отдельно с помощью демона, чтобы избежать ограничения принтера. Быстрые фильтры функционируют так, что их вывод идет прямо на принтер, таким образом, они могут управлять работой принтера.
7.12.2. Настройка характеристик порта принтера
Вам следует удостовериться, что характеристики порта принтера, установленные LP, согласуются с установками линии связи принтера. Стандартные установки порта были созданы для работы с типичными файлами системы UNIX и многими принтерами, но они не будут работать со всеми файлами и принтерами. Это не является шагом настройки, т.к. стандартным свойством LP является предоставление вам возможности указать установки порта для каждого принтера. Однако, это является важным шагом в подготовке вашего принтера к работе с LP.
Когда вы добавляете новый принтер, прочтите документацию к нему, чтобы иметь представление о том, что он ожидает от главной машины. Затем изучите команду stty. Она сводит воедино различные характеристики, которые невозможно установить на терминале или в порт принтера.
В табл. 7.2 перечислены параметры команды stty, которые имеют значение для принтеров.
Таблица
7.2.
Параметр stty |
Значение |
evenp |
Отсылает проверку на четность в 8-м разряде |
oddp |
Отсылает проверку на нечетность в 8-м разряде |
-parity |
Не формирует разряда четности, посылает все 8 разрядов без изменений |
110 - 38400 |
Устанавливает скорость в линии передачи на эту скорость передачи |
ixon |
Разрешает управление потоками XON/XOFF (также известное как START/STOP или DC1/DC3) |
-ixon |
Отключает управление потоками XON/XOFF
|
-opost |
Не выполняет "постобработку вывода" |
opost |
Выполняет "постобработку вывода" согласно установкам |
onclr |
Вставляет символ "возврат каретки" перед любым символом "перевод строки" |
-onclr |
Не вставляет символ "возврат каретки" |
ocrnl |
Изменяет символ "возврат каретки" на символ "перевод строки" |
-ocrnl |
Не изменяет символ "возврат каретки" на символ "перевод строки" |
-tabs |
Заменяет метки табуляции на эквивалентное число пробелов |
tabs |
Не заменяет метки табуляции на пробелы |
7.12.3. Настройка базы данных Terminfo
LP полагается на страндартный интерфейс и базу данных Terminfo при иницииации каждого принтера и установке выбранного размера страницы, шага расположения символов, шага строки и набора символов. Обычно бывает достаточно сделать правильный ввод элементов в базу данных Terminfo, чтобы добавить новый элемент к LP . Несколько элементов принтеров AT&T поставляются вместе с элементами Treminfo в пакете LP.
Каждый принтер идентифицируется в базе данных Terminfo по короткому имени; этот вид имени идентичен тому, которое используется для установки пременной командного файла TERM. Например, принтер AT&T модель 455 идентифицируется по имени 455.
Если вы не можете найти элемент Terminfo для вашего принтера, вам надо его добавить. Если вы этого не сделаете, вы сможете использовать принтер с LP, но у вас не будет возможности получать автоматический выбор размера страницы, шага и набора символов, и у вас могут возникать трудности с установкой принтера в правильные режимы для каждого запроса на распечатку. Другим вариантом, которым можно воспользоваться вместо обновления элемента Terminfo, это настроить программу интерфейса, используемую с принтером.
В табл. 7.3 пречислены элементы, которые нужно определить, прежде чем добавить новый принтер в базу Terminfo.
Таблица
7.3.
Элемент Terminfo |
Значение |
daisy |
Принтеру нужен оператор, чтобы изменить набор символов |
bufsz |
Число байтов, помещаемых в буфер перед распечаткой |
* cols |
Число колонок в строке |
* it |
Метки табуляции, используемые вместо пробелов |
* lines |
Число строк на странице |
orc |
Разрешающая способность по горизонтали в единицах на символ |
orchi |
Разрешающая способность по горизонтали в единицах на дюйм |
orl |
Разрешающая способность по вертикали в единицах на символ |
orvi |
Разрешающая способность по вертикали в единицах на дюйм |
cps |
Средняя скорость распечатки в символах |
* cr |
Возврат каретки |
cpi |
Изменение числа символов на дюйм |
lpi |
Изменение числа строк на дюйм |
chr |
Изменение разрешающей способности по горизонтали |
cvr |
Изменение разрешающей способности по вертикали |
csnm |
Список имен набора символов |
mgс |
Очистка всех полей (верхних, нижних и боковых) |
* hpa |
Абсолютная позиция по горизонтали |
* cud1 |
На одну строку вниз |
* cuf1 |
Каретку вправо |
swidm |
Разрешение печати удвоенной ширины |
rwidm |
Запрещение печати удвоенной ширины |
* ff |
Выдача страницы |
* is1 |
Строка инициации принтера |
* is2 |
Строка инициации принтера |
* is3 |
Строка инициации принтера |
* if |
Имя файла инициации |
* iprog |
Полное имя программы инициации |
* cud |
Перемещение кареткии на # строки вниз |
* cuf |
Перемещение кареткии на # строки вправо |
* rep |
Повтор символа # раз |
* vpa |
Абсолютная позиция по вертикали |
scs |
Выбор набора символов |
smgb |
Установка нижних полей на текущей строке |
smgbp |
Установка нижних полей |
smgl |
Установка левых полей в текущей колонке |
smglp |
Установка полей слева |
smgr |
Установка правых полей в текущей колонке |
smgrp |
Установка полей справа |
smgt |
Установка верхних полей на текущей строке |
smgtp |
Установка верхних полей |
scsd |
Запуск определения набора символов |
* ht |
Метка табуляции для следующих 8 пробелов |
Те элементы, которые помечены звездочкой ( * ), имеются во всех версиях UNIX System V. Остальные можно добавить только, если вы используете систему UNIX System V версии 3.2 или более поздние.
После того как вы создали новый элемент, вам нужно скомпилировать его в базу данных, используя программу tic. Просто введите следующую команду:
где filename - это имя файла, содержащего элемент Terminfo для нового принтера.
Примечание. Сервис принтера LP работает наиболее эффективно, если кэширует информацию из базы данных Terminfo. Если вы добавляете или удаляете элементы из Terminfo или изменяете значения, управляющие установками шагов, шириной и длиной страницы вам следует перезапустить LP, чтобы он использовал новую информацию.