емента в -15-69а- stty-option-list. Если вы не включаете характеристики альтерна- тивного порта принтера, то в таблице будет использоваться спи- сок по умолчанию. В качестве примера допустим, что ваш принтер будет исполь- зоваться для печати графических данных, тогда символы подачи строки должны быть выходными отдельно без добавления возвра- та-каретки. Следует ввести следующую команду:  /usr/lib/lpadmin -p printer-name -o "stty=-onlcr" Заметим, что отдельные кавычки опущены, так как в списке имеет- ся лишь один элемент. -15-70- В другом примере допустим, что ваш принтер требует нечет- ной четности для данных, которые пересылаются на него. Следует ввести следующую команду: Ъ2/usr/lib/lpadmin -p Ъ1printer-name -o "stty='parenb parodd cs7'"  Настройка базы данных terminfo Обслуживание печати основывается на стандартном интерфейсе и базе данных terminfo при инициализации каждого принтера и ус- тановке выбранного размера страницы, шага символов, шага строки и набора символов. Таким образом, обычно достаточно иметь кор- ректный элемент в базе данных terminfo для добавления нового принтера для обслуживания принтера. Несколько элементов для распространенных принтеров содержатся в элементах базы данных terminfo с пакетом обслуживания печати. Каждый принтер идентифицируется в базе данных terminfo ко- ротким именем. Этот вид имени идентичен виду имени, используе- мому для установки переменной оболочки TERM, например, AT&T мо- дели 455 идентифицируется именем. Если вы не можете найти элемент terminfo для вашего прин- тера: вам следует добавить его. Если вы не сделаете это, вы мо- жете еще использовать принтер с обслуживанием печати, но вы не можете получить автоматический выбор размера страниц, шага и набора символов и у вас могут возникнуть проблемы при отслежи- вании набора принтеров в корректных режимах для каждого запроса печати. Другая возможность, которую можно использовать вместо обновления элемента terminfo, состоит в настройке интерфейсной программы, используемой с принтером. Смотрите следующий раздел для получения сведений о том, как это делать. Имеются сотни элементов, которые могут быть определены для каждого терминала или принтера в базе данных terminfo. Однако обслуживание печати использует менее половины из них, а боль- шинству принтеров необходимо даже меньшее количество. В таблице 15.9 перечислены элементы, которые необходимо определить (как подходящие для принтера) для добавления нового принтера к обс- луживанию печати. -15-71-  Таблица 15.9 Определение terminfo Элемент terminfo ------------------------------------------- Булевские значения daisy принтер требует, чтобы оператор изменил набор символов Числа bufsz  число байтов, буферизуемых перед печатью cols  число колонок в строке it  метки табуляции начально располагаются через каждый промежуток # пробелов lines  число строк на странице orc  горизонтальное разрешение в единицах на символ orhi  горизонтальное разрешение в единицах на дюйм orl  вертикальное разрешение в единицах на символ orvi  вертикальное разрешение в единицах на дюйм cps  средняя скорость печати в символах в секунду Строки: cr  возврат каретки cpi  изменение числа символов на дюйм lpi  изменение числа строк на дюйм chr  изменение горизонтального разрешения cvr  изменение вертикального разрешения csmn  список имен набора символов mgs  сброс всех полей (верх, низ и края) 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 или могут обеспечивать различные наборы возможностей. Вы можете захотеть присвоить различные имена типу содержимого для этих принтеров, чтобы раз- личать их. Вы не должны перечислять типы содержимого для принтера. Если вы не делаете это, тип принтера используется как имя типа содержимого, которое принтер может обрабатывать. Если вы не за- дали тип принтера, обслуживание печати предполагает, что прин- тер может печатать только файлы типа содержимого 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 - это список имен, разделенных запятой или пробелом. Если вы используете пробелы для разделения имен, зак- лючите весь списо