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

Как добавить интерфейсную программу

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

Ъ2 /usr/lib/lpadmin -p Ъ1printername Ъ2-i pathname
имя принтера имя пути

Для идентификации настроенной интерфейсной программы ссыл-
кой на другой принтер дайте имена принтерам следующим образом:

Ъ2 /usr/lib/lpadmin -p Ъ1printername1 Ъ2-е printername2
имя принтера1 имя принтера2

printername1 должно быть замещено именем принтера, который вы
добавляете, printername2 должно быть замещено именем принтера,
уже добавленным, который использует настроенную интерфейсную
программу.

-15-79а-

Для идентификации интерфейсной программы по ссылке на мо-
дельную интерфейсную программу дайте имя принтера и имя модели
следующим образом:

Ъ2 /usr/lib/lpadmin -p Ъ1printername Ъ2-m modelname
имя принтера имя модели

Как писать фильтр

Фильтр используется обслуживанием печати каждый раз, когда
он должен печатать тип файла, который не принимается принтером.
В то время, как фильтр может быть столь прост или столь сложен,

-15-80-

как это необходимо, существует только несколько внешних требо-
ваний:
- Фильтр должен получить содержимое файла пользователя из
стандартного входа и послать преобразованный файл на стан-
дартный выход.
- Медленный фильтр может послать сообщения об ошибках в
файле на стандартный выход ошибок. Быстрый фильтр не дол-
жен посылать сообщения, как это описано ниже. Сообщение об
ошибках от медленного фильтра будут собираться и посылать-
ся пользователю, пославшему файл на печать.
- Если медленный фильтр отменен из-за получения сигнала,
запрос печати завершается, и пользователь, пославший зап-
рос, извещается. Более того, если медленный фильтр завер-
шается с ненулевым кодом выхода, запрос печати завершается
и пользователь извещается. Коды выхода от быстрых фильтров
обрабатываются по-другому, как описано позднее.
- Фильтр не должен зависеть от других файлов, которые
обычно не доступны обычному пользователю. Если фильтр за-
вершается аварийно, когда пользователь выполняет его нап-
рямую, он будет завершаться аварийно и при выполнении обс-
луживания печати.
Раздел "Фильтры" описывает, как добавить фильтр к обслужи-
ванию печати.
Имеется несколько дополнительных требований, если фильтр
должен также регистрировать сбои принтера:
- Если он может, он должен ждать сброса сбоя перед завер-
шением. Дополнительно он должен продолжать печать с верх-
ней части страницы, где печать остановилась после сбросов
сбоя. Если это не намерения администратора, то обслужива-
ние печати останавливает фильтр перед предупреждением ад-
министратора.
- Он должен послать сообщения сбоя принтера на стандартный
выход ошибок, когда распознается сбой. Он не должен завер-
шаться, но может ждать, как это описано выше.
- Он не должен посылать сообщения об ошибках в файл на вы-
ход стандартных ошибок. Любые сообщения на стандартном вы-
ходе ошибок могут генерировать сбой принтера. Их следует
включить в стандартный выходной поток, где они могут быть
считаны пользователем.
- Он должен завершиться нулевым кодом выхода, если файл
пользователя завершен (даже, если ошибки в файле

-15-80а-

препятствуют корректной печати).
- Он должен завершаться ненулевым кодом выхода только, ес-
ли сбой принтера предупреждает его от завершения файла.
- После добавления в таблицу фильтра он должен быть добавлен,
как быстрый фильтр. Смотрите раздел "Определение фильтра"
под заголовком "Фильтры" в данной главе.


-15-81-

СПЕЦИАЛЬНЫЕ ВОЗМОЖНОСТИ КОНФИГУРАЦИИ

Хотя значения по умолчанию для конфигурации принтера обыч-
но достаточны для большинства потребностей, имеется ряд возмож-
ностей для конфигурации отдельных аспектов операций печати. Они
включают такие возможности, как предупреждение о сбое и восста-
новление. Далее следует список дополнительной информации, кото-
рая может быть дана для определения конфигурации каждого прин-
тера:
- Тип принтера
- Типы содержимого
- Метод соединения
- Наборы символов или печатающие механизмы
- Предупреждение о сбое
- Восстановление при сбое
- Использование ограничений
- Атрибуты печати по умолчанию
Вам необходимо дать очень мало этой информации для добав-
ления нового принтера к обслуживанию печати; однако, чем больше
информации вы обеспечиваете, тем лучше управляется принтер для
вас и тем лучше он может обслуживать людей с помощью обслужива-
ния печати.
Описания в следующих разделах помогут вам понять, что эта
информация о конфигурации принтера означает, и как она исполь-
зуется, поэтому вы можете решить, как задавать эту информацию
при добавлении принтера. Вы можете рассмотреть каждый из разде-
лов в данном порядке и корректно конфигурировать принтер за
несколько этапов, вы можете ожидать, пока вы прочтете все раз-
делы перед добавлением принтера, так, что вы можете сделать это
за один шаг.
Тип принтера

Тип принтера важен для правильного использования принтера.
Обслуживание принтера использует тип принтера для выделения ин-
формации о принтере из базы данных terminfo. Эта информация
описывает возможности принтера, так, что вы можете быть пре-
дупреждены, если некоторая из обеспечиваемой вами информации
конфигурации не соответствует принтеру. Эта информация также
описывает управляющие данные для использования при инициализации
принтера перед печатью файла. Если вам не требуется задать тип
принтера, вы можете задать тот тип, который лучше обеспечивает-
ся средствами печати.

-15-82-

Тип принтера - это общее имя принтера. Задавайте тип прин-
тера следующим образом:

Ъ2 /usr/lib/lpadmin -p Ъ1printername Ъ2-T printer-type

sysadmsh пользователи выбирают:
Printer-->Configure-->Parameters
(Принтеры-->Конфигурация-->Параметры)

Если вы не определяете тип принтера, используется по умол-
чанию unknоwn. При этом формируются пустые результаты, когда
обслуживание печати просматривает информацию о принтере, так,
что обслуживание печати не может проверить определенные запросы
или инициализировать принтер.

Типы содержимого

В то время, как информация о типе принтера сообщает обслу-
живанию печати, какой тип принтера добавляется, информация о
типе содержимого сообщает обслуживанию печати, какие типы фай-
лов могут быть напечатаны. Большая часть принтеров может печа-
тать только один тип файла; для них тип содержимого вероятно
идентичен типу принтера. Некоторые принтеры, однако, могут при-
нимать несколько различных типов файлов и печатать их содержи-
мое корректно. При добавлении этого типа принтера вам следует
перечислить имена типов содержимого, которые принимаются.
Когда файл передается обслуживанию печати на печать, обс-
луживание печати ищет принтер, способный обрабатывать задание.
Обслуживание печати может идентифицировать соответствующий
принтер, либо через имя типа-содержимого, либо через имя прин-
тер-тип. Поэтому вы можете задать любое имя (или не задавать
имя) при передаче файла на печать.
Имена содержимое-тип могут выглядеть аналогично именам
принтер-тип, но вы свободны в выборе имен, которые что-то зна-
чат для вас и людей, использующих принтер. (Имена simple,
terminfo и any распознаются как имеющие особое значение для об-
служивания печати; следует использовать их соответствующим об-
разом). Имена должны содержать не более 14 символов и могут
включать только буквы, цифры и подчеркивания. Если один тип со-
держимого печатается различными типами принтеров, вам следует
использовать те же имена типа содержимого при добавлении этих
принтеров. Это

-15-82а-

проще для людей, использующих принтеры, так как они могут ис-
пользовать то же имя для идентификации типа файла, который они
хотят печатать независимо от назначения печати.
Например некоторые производители изготовляют принтеры, ко-
торые принимают файлы PostScript. Так как этим принтерам могут
требоваться различные типы принтеров, то каждый из них должен
быть правильно инициализирован (в предположении, что управляю-
щие последовательности инициализации различны), они могут иметь
возможность обработки одного и того же типа входного файла, ко-
торый вы вызываете, возможно postscript. Другой пример, некото-
рые производители изготовляют принтеры, которые принимают

-15-83-

управляющие последовательности ANSI X3.64. Однако принтеры мо-
гут не обеспечивать все возможности ANSI или могут обеспечивать
различные наборы возможностей. Вы можете захотеть присвоить
различные имена типу содержимого для этих принтеров, чтобы раз-
личать их.
Вы не должны перечислять типы содержимого для принтера.
Если вы не делаете это, тип принтера используется как имя типа
содержимого, которое принтер может обрабатывать. Если вы не за-
дали тип принтера, обслуживание печати предполагает, что прин-
тер может печатать только файлы типа содержимого simple. Это
может быть достаточным, если вы требуете, чтобы люди выбирали
правильный принтер и были уверены, что файлы правильно подго-
товлены для принтера перед их посылкой на печать.
Наиболее общий тип файла в системах UNIX известен как
simple. Предполагается, что этот файл содержит только печатае-
мые символы ASCII и следующие управляющие символы:

Возврат Пересылает носитель обратно на одну позицию кро-
ме начала строки
Метка Пересылает носитель на следующую метку табуля-
табуляции ции, которая на большинстве принтеров
располагается через каждые 8 колонок
Подача строки Пересылает носитель в начало следующей строки
(может требовать специальных установок порта для
некоторых принтеров - смотрите следующий раздел
"Характеристики порта принтера")
Подача формы Пересылает носитель к началу следующей страницы
Возврат кареткиПересылает носитель в начало той же строки (мо-
жет не получиться на некоторых принтерах)

Слово "носитель" может быть архаичным для современных ла-
зерных принтеров, но при этом выполняются аналогичные действия.
Если принтер может обрабатывать тип simple файла, вам следует
включить его в список типа содержимого при добавлении принтера
и задании типа (типов) содержимого, которые могут обрабатывать-
ся принтером. Если вы не хотите, чтобы принтер принимал файлы
типа simple, вам следует назначить альтернативный список типов
содержимого, которые принтер может принять. (Тип принтера - это
хорошее имя, если другой тип не подходит).
Другим именем типа содержимого является terminfo. Оно не
относится к отдельному типу файла, а вместо этого относится ко
всем типам, представленным в базе данных terminfo. Не вероятно,

-15-83а-

что любой принтер имеет возможность обработки всех типов, пере-
численных в базе данных. Однако это имя резервируется для опи-
сания возможных средств фильтра. Кроме того тип содержимого
any резервируется для описания типов файла, которые фильтр мо-
жет принять или сформировать. Эти имена не следует использо-
вать, как типы содержимого при добавлении принтера.

-15-84-

Задайте список типов содержимого следующим образом:

Ъ2 /usr/lib/lpadmin -p Ъ1printernameЪ2 -I content-type-list
(содержимое-тип-список)
sysadmsh пользователи выбирают:
Printer-->Configure-->Content
(Принтеры-->Конфигурация-->Содержимое)

Содержимое-тип-список - это список имен, разделенных запя-
той или пробелом. Если вы используете пробелы для разделения
имен, заключите весь список (но не -I) в кавычки. Если вы не
определяете типы файлов, которые может принять принтер, то обс-
луживание печати предполагает, что он может принять тип simple
и тип с тем же именем, что и тип принтера (если тип принтера
определен).

Метод соединения

Обслуживание печати позволяет вам соединять ваши принтеры
различными способами. Простейший способ состоит в присоединении
принтера прямо к компьютеру. Однако, вы можете захотеть соеди-
нить принтеры через сеть или через выбираемый модем, когда они
могут разделяться с другими компьютерами или рабочими станция-
ми. После присоединения принтера к компьютеру или соединения их
в сеть и присоединения сети к компьютеру вам следует описать
метод соединения для обслуживания печати.
Метод по умолчанию, которым принтеры соединяются с компь-
ютером - это прямой метод соединения. Если вы используете этот
метод для подсоединения принтера к вашему компьютеру, то обычно
вам нужно сделать только следующее: дать имя порта соединения.
Существуют два метода создания непрямых соединений: через
выбираемый модем или через любой другой тип сети. Обслуживание
печати использует систему UUCP для реализации обоих методов
непрямых соединений. Когда используется выбираемый модем, долж-
ны быть удовлетворены три условия: принтер должен быть связан с
выбираемым модемом, выбираемый модем должен быть связан с
компьютером, и система UUCP должна знать об этом модеме.
Принтеры, соединенные через любой другой тип сети требуют,
чтобы для каждого принтера задавалось "имя системы". Это имя
элемента в системном файле или связанном файле. Хотя принтер не
относится к системе UNIX, системный файл может еще

-15-84а-

использоваться для регистрации метода доступа (конечно информа-
ция подключения даваться не будет).
Так как программа cu осуществляет доступ к принтеру также,
как обслуживание печати LP, вам следует задать файлы для подго-
товки доступа к принтеру для cu. Команда cu не используется для
доступа к принтерам, но может служить как мерило при задании
файлов: если cu может осуществить доступ к принтеру, обслужива-
ние печати LP будет иметь возможность доступа также (смотрите
"Построение удаленной сети с UUCP для получения более

-15-85-

подробной информации о задании соединенной сети).
Для добавления принтера, который связан через модем или
сеть, введите следующую команду:

Ъ2 /usr/lib/lpadmin -p Ъ1printer-name Ъ2-U dial-info
(информация вызова)
sysadmsh пользователи выбирают:
Printer-->Configure-->Add
(Принтеры-->Конфигурация-->Добавление)

dial-info - либо телефонный номер, набираемый для достижения
модема принтера, либо имя системы, вводимое в системный файл
UUCP для принтера.
Вы должны ввести команду lpadmin с возможностью -U, либо -
v. И, если вы не задаете возможность -l, обслуживание печати LP
будет автоматически выполнять повторы позднее. Интенсивность
повторов составляет 10 минут, если принтер занят и 20 минут,
если занят порт. Интенсивность не настраивается. Однако вы мо-
жете вызвать немедленный повтор выдачей команды enable для
принтера. Если порт или принтер будут вероятно заняты на про-
должительный период, вам следует выдать команду disable.
Команда lpstat -p сообщает причину для аварийной попытки
выбора. Кроме того, если вы предупреждаетесь о сбое выбора
(смотрите раздел "Предупреждение о сбое" ниже), то сообщение
предупреждения выдаст причину сбоя. Эти сообщения идентичны со-
общениям об ошибках, формируемым системой UUCP в аналогичных
случаях. Смотрите раздел, называемый "Сообщение об ошибках сос-
тояния UUCP" в разделе "Построение удаленной сети с UUCP для
объяснения причин сбоев.

Наборы символов или печатающие механизмы

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

-15-85а-

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

-15-86-

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

Ъ2 TERM=Ъ1printer-type tput csnm 0

printer-type - это имя рассматриваемого типа принтера. Имя ну-
левого набора символов (набор символов получается по умолчанию
после инициализации принтера) должно быть напечатано. Повторите
команду, используя 1, 2, 3 и так далее вместо 0, чтобы увидеть
имена других наборов символов. В общем случае имена terminfo
должны близко соответствовать именам, используемым в документа-
ции пользователя по принтеру. Однако, так как не все производи-
тели используют одни и те же имена, имена terminfo могут отли-
чаться от одного типа принтера до следующего.

Примечание
Для нахождения обслуживанием печати имен в базе данных
terminfo вам следует задать тип принтера. Смотрите описанный
ранее раздел "Тип принтера".

Для задания списка имен печатающего механизма при добавле-
нии принтера введите следующую команду:

-15-86а-

Ъ2 /usr/lib/lpadmin -pЪ1 printer-name Ъ2-S print-wheel-list
(печатающий механизм-список)
sysadmsh пользователи выбирают:
Printer-->Configure-->Parameters
(Принтеры-->Конфигурация-->Параметры)

print-wheel-list - это список имен, разделенных запятой или
пробелом. Если вы используете пробелы для разделения имен, зак-
лючите весь список (но не -S) в кавычки.
Для задания списка имен набора символов и отображения их в
имена или числа terminfo введите следующую команду:

-15-87-

Ъ2 /usr/lib/lpadmin -p Ъ1printer-name Ъ2-S character-set-list
(список набора символов)
sysadmsh пользователи выбирают:
Printer-->Configure-->Parameters
(Принтеры-->Конфигурация-->Параметры)

character-set-list - это также список имен, разделенных запятой
или пробелом. Однако каждый элемент в этом списке выглядит сле-
дующим образом:

Ъ2 csN=character-setname
character-setname1=character-setname2

N в первом случае - это число от 0 до 63, идентифицирующее
номер набора символов в базе данных Ъ2terminfo.
character-setname1 во втором случае идентифицирует набор симво-
лов по имени terminfo. В любом случае имя справа от знака ра-
венства (=) - это имя, выбранное, как псевдоним набора символов.

Примечание
Вы не должны обеспечивать список псевдонимов для наборов симво-
лов, если имена terminfo адекватны. Вы можете ссылаться на
набор символов по числу, по имени terminfo или по вашему псе-
вдониму.

Например допустим, что ваш принтер имеет два выбираемых
набора символов (набор #1 и #2) в добавление к стандартному на-
бору символов (набор #0). Тип принтера 5310. Вы вводите следую-
щие команды для определения имен выбираемых наборов символов:

TERM=5310 tput csmn 1
english
TERM=5310 tput csmn 2
finnish

Слова english и finnish, выход команд - это имена выбираемых
наборов символов. Вы чувствуете, что имя "finnish" адекватно
ссылке на набор символов #2, но лучше использовать имена для
стандартного набора и набора #1. Вы вводите следующую команду
для определения синонимов:

-15-87а-


Ъ2 /usr/lib/lpadmin -p Ъ1printer-name -S "cs0=american,
english=british
sysadmsh пользователи выбирают:
Printer-->Configure-->Parameters
(Принтеры-->Конфигурация-->Параметры)

Если вы не перечисляете печатающие механизмы или наборы
символов, которые могут использоваться с принтером, то обслужи-
вание печати предполагает следующее: принтер, который имеет пе-
чатающие механизмы, имеет только отдельный, фиксированный печа-
тающий механизм при использовании принтера. Кроме того

-15-88-

принтер, который имеет выбираемые наборы символов, может ис-
пользовать любое имя csN или terminfо, известное для принтера.

Предупреждение на монтирование печатающего механизма

Если ваши принтеры имеют изменяемые печатающие механизмы,
и вы перечислили печатающие механизмы, разрешенные для каждого
принтера, то пользователи могут послать запрос печати на ис-
пользование отдельного печатающего механизма. Однако, до того,
как он будет монтирован (смотрите раздел "Монтирование формы
или печатающего механизма" в этой главе) запрос на печатающий
механизм остается в очереди и не печатается. Вы можете периоди-
чески отслеживать число запросов печати, ждущих отдельного пе-
чатающего механизма, но обслуживание печати предоставляет более
простой способ. Вы можете запросить получение предупреждения,
когда число запросов, ждущих печатающий механизм превышает не-
который порог.
Вы можете выбрать один из нескольких способов получения
предупреждения:
- Вы можете получить предупреждение по электронной почте.
Смотрите раздел mail(C) для описания команды Ъ2mail.Ъ
- Вы можете получить предупреждение, написанное для терми-
нала, с которого вы подключились к системе. Смотрите раз-
дел write(C) для описания команды write.
- Вы можете получить предупреждение через выбранную вами
программу.
- Вы можете не получить предупреждение.

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

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

-15-89-

Ъ2 /usr/lib/lpadmin -S Ъ1print-wheelname -A mail
-Q Ъ1integer Ъ2-W minutes
Ъ2 /usr/lib/lpadmin -S Ъ1print-wheelname -A write
-Q Ъ1integer Ъ1-W minutes
Ъ2 /usr/lib/lpadmin -S Ъ1print-wheelname Ъ2-A 'command'
Ъ2-Q Ъ1integer Ъ2-W minutes
Ъ2 /usr/lib/lpadmin -S Ъ1print-wheelname -A none

sysadmsh пользователи выбирают:
Рrinters-->Auxiliary-->Alert
(Принтеры-->Вспомогательный-->Предупреждение)

Первые две команды приводят к тому, что обслуживание печа-
ти посылает вам сообщение почты или пишет сообщение прямо на
ваш терминал, соответственно, для каждого предупреждения.
Третья команда запрашивает у обслуживания печати выполнение
command для каждого предупреждения. Среда оболочки, действую-
щая, когда вы вводите третью команду, сохраняется и восстанав-
ливается для выполнения command; сюда включены переменные сре-
ды, идентификатор пользователя и группы и текущее оглавление.
Четвертая команда запрашивает у обслуживания печати никогда не
посылать ему предупреждения о необходимости монтирования печа-
тающего механизма. Integer (целое) - это число запросов, кото-
рым необходимо ждать печатающий механизм, а minutes (минуты) -
это число минут между повторяющимися предупреждениями.

Примечание
Если вы хотите послать почту или сообщение другому лицу при
возникновении сбоя принтера, вы должны использовать третью
перечисленную команду. Используйте -A 'mail user-name' или
Ъ2 -А 'writeЪ1 user-name' option.

После того, как вы начали получать повторяющиеся предупрежде-
ния, вы можете запросить у обслуживания печати прекращение по-
сылки вам предупреждений в данном случае выдав следующую коман-
ду:

Ъ2 /usr/lib/lpadmin-S Ъ1print-wheelname -A quiet

sysadmsh пользователи выбирают:
Printers-->Auxiliary-->Alert
(принтеры-->Вспомогательный-->Предупреждение)

-15-89а-


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