Купить
 
 
Жанр: Учеба

SCO: Пособие администратора системы Unix

страница №42

ая)
hpa абсолютная горизонтальная позиция
cud1 ниже на одну строку
cuf1 каретка справа
swidm разрешение печати двойной ширины
rwidm отмена печати двойной ширины
ff выдача страницы
is1 строка инициализации принтера
is2 строка инициализации принтера
is3 строка инициализации принтера
if имя файла инициализации

-15-71аiprog
имя пути программы инициализации
cud пересылка каретки ниже на # строк
cuf пересылка каретки вправо на # столбцов
rep повторение символа # раз
vpa абсолютная вертикальная позиция

-15-72

scs выбор набора символов
smgb задание нижнего поля текущей строки
smgbp задание нижнего поля
smgl задание левого поля для текущей колонки
smglp задание левого поля
smgr задание правого поля для текущей колонки
smgrp задание правого поля
smgt задание верхнего поля текущей строки
smgtp задание верхнего поля
scsd начало определения набора символов
ht символ табуляции для следующего 8-символьного
прекращения табуляции

Обратитесь к странице руководства для получения подробной
информации о структуре файла terminfo(M) в документе User's
Reference и о создании элемента база данных terminfo для нового
принтера.
После того, как вы создали новый элемент, вам нужно компилировать
его в новой базе данных с помощью программы tic. Введите
только следующую команду:

Ъ2 tic filename
filename - это имя файла, содержащего элемент terminfo, который
вы создали для нового принтера. (Эта программа имеется в Утилитах
Информации Терминала).

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

-15-73-

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

Примечание
Если у вас имеется интерфейсная программа, которую вы исполь-
зуете с Утилитами Спулера LP в UNIX Система Y Издание 3.2,
она должна работать также с обслуживанием печати. Заметим,
однако, что несколько возможностей -о стандартизовано и пере-
дается каждой интерфейсной программе. Они могут взаимодейс-
твовать с аналогичным образом именованными возможностями, ко-
торые использует ваша интерфейсная программа.

Если у вас имеется принтер, который не обеспечен простым
добавлением элемента в базу данных terminfo, или же ваши потребности
печати не обеспечены стандартной интерфейсной программой,
вы можете использовать собственную интерфейсную программу.
Имеет смысл начать со стандартной интерфейсной программы и изменять
ее при необходимости, чем начинать с нуля. Вы можете
найти ее копию под именем
/usr/spool/lp/model/standard.


Что делает интерфейсная программа?

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

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

Как используется интерфейсная программа?

Когда обслуживание печати направляет выходной запрос на
принтер, интерфейсная программа для принтера вызывается следующим
образом:
Ъ2/usr/spool/lp/admins/lp/interface/P id user title copies options
file1 file2 ...

Аргументами интерфейсной программы являются:

P имя принтера
id идентификатор запроса, возвращаемый lp
user имя подключения пользователя, сделавшего запрос
title выборочный титул, заданный пользователем
copies число копий, запрошенных пользователем
options список возможностей, разделенных пробелами,
заданный пользователем, или набор обслуживания
печати
file полное имя пути печатаемого файла

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

nobanner Эта возможность используется, чтобы пропустить
печать страницы заголовка. Без нее страница за-
головка печатается.
nofilebreak Эта возможность используется для пропуска раз-
бивки страниц между отдельными файлами данных,
без нее разбивка делается между каждым файлом в
содержимом запроса печати.
cpi=decimal-number1 - десятичное число
lpi=decimal-number2 - десятичное число

-15-75-

Эти возможности запрашивают печать с decimal-number1
числом колонок на дюйм и с decimal-number2 числом
строк на дюйм соответственно. Стандартная интерфейс-
ная программа выделяет из базы данных terminfo управ-
ляющие последовательности, необходимые для инициали-
зации принтера по обработке шага символа и строки.
Слова pica, elite и compress - это допустимые замены
для decimal-number1 и являются синонимами для 10
столбцов на дюйм, 12 столбцов на дюйм и такого числа
колонок на дюйм, которое возможно.

Ъ2length=decimal-number1
Ъ2width=decimal-number2
Эти возможности задают длину и ширину, соответствен-
но, печатаемых страниц. Стандартная интерфейсная
программа извлекает из базы данных terminfo управляю-
щие последовательности, необходимые для инициализации
принтера по обработке длины страницы и ширины страни-
цы.
Ъ2stty='stty-option-list'
stty-option-list - используется после списка по умолча-

нию как аргументы в команде stty. Список по умолчанию
используется для задания конфигурации порта по умол-
чанию, дополнительный список, передаваемый интерфейс-
ной программе по умолчанию, используется для измене-
ния конфигурации при необходимости.
Указанные выше возможности задаются либо пользователем при
выдаче запроса порта, либо обслуживанием печати из значений
умолчания, устанавливаемых администратором для принтера (cpi,
lpi, length, width, stty) или для препринтной формы, используемой
в запросе (cpi, lpi, length, width).
Дополнительная информация о конфигурации принтера передается
интерфейсной программе в переменных оболочки:
Ъ2 TERM=printer-type
Эта переменная оболочки задает тип принтера. Значение
используется как ключ для получения информации о воз-
можностях принтера из расширенной базы данных
terminfo.
Ъ2 FILTER='pipeline'
(конвейер)
Эта переменная оболочки задает использование фильтра
для посылки содержимого запроса на принтер, фильтру
передается управление принтером.

-15-76Ъ2
CHARSET=character-set
(набор символов)
Эта переменная оболочки задает набор символов, ис-
пользуемых при печати содержимого запроса печати.
Стандартная интерфейсная программа извлекает из базы
данных terminfo управляющие последовательности, необ-
ходимые для выбора набора символов.
Настроенная интерфейсная программа должна либо игнорировать
эти возможности и переменные оболочки, либо должна распознавать
их и соответствующим образом обрабатывать.

Настройка интерфейсной программы

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

## Initialize the printer port
(инициализируйте порт принтера)

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

Ъ2 stty Ъ1mode options 0"&1
(режим возможности)

Эта строка команды берет стандартный вход для команды
stty из порта принтера. Пример строки команды stty, которая задает
скорость передачи 1200 и устанавливает некоторые режимы
возможностей, показан далее:

stty -parenb -parodd 1200 cs8 cread clocal ixon 0"&1

Одной из характеристик порта, не устанавливаемой стандартной
интерфейсной программой, является управление потоком аппаратуры.

Код для стандартной интерфейсной программы предполагает,
где эта и другие характеристики порта принтера

-15-76амогут
быть установлены. Смотрите раздел, который начинается
комментарием оболочки:

# Here you may want to add other port initialization code
(Здесь вы можете захотеть добавить другой код инициализации
порта).

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

-15-77-

## Print the banner page
(печатайте страницу заголовка)

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

0 Запрос печати завершился успешно. Если произошел сбой
принтера, он сбрасывается.
1-127 Возникла проблема при печати данного отдельного зап-
роса (например, слишком много непечатаемых символов
или запрос превышает возможности принтера). Эта проб-
лема не влияет на последующие запросы печати. Обслу-
живание печати извещает лицо, пославшее запрос о воз-
никновении ошибки печати. Если произошел сбой
принтера, он сбрасывается.
128 Резервируется для внутреннего использования обслужи-
ванием печати LP. Интерфейсные программы не должны
завершаться с этим кодом.
129 Сбой принтера произошел при печати запроса. Эта проб-
лема влияет на последующие запросы печати. Если восс-
тановление при сбоях принтера заставляет обслуживание
печати ждать администратора для регистрации проблемы,
оно закрывает принтер. Если восстановление при сбое
продолжает печать, обслуживание печати не закрывает
принтер, но пытается печатать снова через несколько
минут.
"129 Эти коды резервируются для внутреннего использования
обслуживанием печати. Интерфейсные программы не долж-
ны завершаться с кодами в этом диапазоне.
Как показывает таблица одним из способов извещения
администратора о сбое принтера является завершение с кодом 129.

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

Дополнительное достоинство состоит в том, что
интерфейсная программа может регистрировать регистрацию сбоя
автоматически, так, что администратор не должен открывать принтер.

Сообщения о сбое могут посылаться обслуживанию печати с
помощью программы lp.tell. Ссылки осуществляются переменной
оболочки $LPTELL в стандартном интерфейсном коде. Эта программа
берет стандартный вход и посылает его обслуживанию печати, где
он помещается в сообщение, которое предупреждает администратора
о сбое принтера. Если стандартный вход принтера пуст, lp.tell
не инициирует предупреждение. Проверим стандартный интерфейсный
код сразу после этих комментариев для примера того, как используется
программа lp.tell ($LPTELL):

# Here's where we set up the $LPTELL program to capture
# fault messages.
# Here's where we print the file.
(далее мы запрашивает у программы $LPTELL перехват сообщений о
сбое. Далее мы печатаем файл).

Для специального кода выхода 129 или программы lp.tell отсутствует
необходимость для интерфейсной программы закрывать
сам принтер. Ваша интерфейсная программа может закрыть принтер
напрямую, но при этом перекрывается механизм предупреждения о
сбоях. Предупреждения посылаются только, если обслуживание печати
регистрирует сбойный принтер, а специальный код выхода
программа lp.tell - это основные инструменты регистрации.

-15-78а-

Если обслуживание печати должно прервать печать файла в
любое время, оно отменяет интерфейсную программу с сигналом 15
(смотрите kill(C) в документе User's Reference и signal(S) в
документе Programmer's Referense). Если интерфейсная программа
отменяется при получении любого другого сигнала, то обслуживание
печати предполагает, что последующие запросы печати не подвержены
влиянию и продолжают использовать принтер. Обслуживание
печати извещает лицо, получившее запрос, о том, что он не
завершился успешно.
Запуск сигналов SIGHUP, SIGINT, SIGOUT, SIGPIPE (обращения
номер 1, 2, 3 и 13) игнорируется, когда вызывается интерфейс.
Стандартный интерфейс проводит изменения для перехвата этих
сигналов в соответствующие моменты. Стандартный интерфейс рассматривает
получение этих сигналов как то, что у принтера возникла
проблема, и выдает извещение о сбое. Это та программа,
которую обслуживание печати использует для управления принтером
каждый раз, когда печатается файл. Она выполняет четыре основные
задачи:
- Инициализация порта принтера (соединение между компьюте-
ром и принтером).

-15-79-

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

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

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

Ъ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 или могут обеспечивать
различные наборы возможностей. Вы можете захотеть присвоить
различные имена типу содержимого для этих принтеров, чтобы различать
их.
Вы не должны перечислять типы содержимого для принтера.
Если вы не делаете это, тип принтера используется как имя типа
содержимого, которое принтер может обрабатывать. Если вы не за

Список страниц

Закладка в соц.сетях

Купить

☏ Заказ рекламы: +380504468872

© Ассоциация электронных библиотек Украины

☝ Все материалы сайта (включая статьи, изображения, рекламные объявления и пр.) предназначены только для предварительного ознакомления. Все права на публикации, представленные на сайте принадлежат их законным владельцам. Просим Вас не сохранять копии информации.