принять и типом выхода, который он может произвести. Теперь обслуживание принтера может быть более сложным в попытке установить соответствие файла пользова- теля и принтера. Если прямое соответствие не обнаруживается, то обращаются к таблице фильтров для нахождения фильтра, преобра- зующего тип фильтра в тип принтера. Имеется несколько примеров. Пример 1 Пользователь Крис выполнил программу работы с крупнофор- матными таблицами и сгенерировал копию файла таблицы. Теперь Крис хочет печатать этот файл, используя обслуживание печати. Вы располагаете в системе только принтером модели 455 AT&T. К счастью приложение, работающее с таблицами, понимает, как гене- рировать выход для нескольких принтеров, и Крис знает, как зап- росить у нее генерацию файла для AT&T455. Когда Крис посылает файл на печать, обслуживание печати ставит его в очередь к од- ному из принтеров; фильтр не нужен. Пример 2 Пользователь Марти выполнил программу обработки слов nroff для получения копии большого документа. Программа nroff также понимает, как генерировать выход для нескольких принте- ров, но Марти забыл и сгенерировал выходной тип по умолчанию (назовем -15-51а- этот тип nroff35), который не воспроизводится корректно на AT&T455. Однако вы предвидели эту ситуацию и добавили фильтр 450 в таблицу фильтров, отметив ее, как принимающую стандартный выход nroff (то есть nroff35) и отметив ее, как производящую выход для AT&T455 (назовем ее тип 455). Так как вы добавили принтер, как тип 455, обслуживание печати распознает, что он может использовать фильтр 450 для преобразования выхода Марти перед печатью. -15-52- Обработка специальных режимов Другой важной функцией, которую могут обеспечить фильтры, является обработка различных режимов печати, которые могут встретиться. Каждый фильтр, который вы добавляете в таблицу фильтров, может быть зарегистрирован, как обрабатывающий нес- колько аспектов печати. Они перечислены ниже: Входной тип Выходной тип Тип печати Шаг символа Шаг строки Длина страницы Ширина страницы Страницы для печати Набор символов Имя формы Число копий Режимы Фильтр не требуется для обработки большей части этих ас- пектов, только режимов. Обслуживание печати предоставляет для остальных обработку по умолчанию. Однако может оказаться более эффективным обрабатывать эти ситуации фильтром, или же фильтр должен знать несколько из этих аспектов, если он правильно вы- полняет другие роли. Фильтру может понадобиться знать, напри- мер, размер страницы и интервалы печати, если он собирается разбивать страницы в файле для соответствия печатным страницам. Другой пример, некоторые принтеры могут обрабатывать несколько копий более эффективно, чем обслуживание печати, поэтому фильтр, контролирующий принтер, может использовать несколько копий информации для пропуска обработки по умолчанию обслужива- нием печати для этой ситуации. Позднее мы увидим, как вы можете регистрировать режимы пе- чати и другие аспекты печати с каждым фильтром. Регистрация сбоя принтера Также как преобразование файла и обработка специальных ре- жимов печати - это специфичная для принтера функция, такой функцией является и регистрация сбоев принтера. Обслуживание принтера пытается выполнить эту функцию и для большинства -15-52а- принтеров корректно регистрирует сбой. Однако оно ограничивает- ся проверкой зависаний (потеря носителя или сигнала о готовнос- ти принтера) и чрезмерными задержками в печати (то есть получе- ние управляющего символа XOFF для отключения потока данных, когда нет соответствия XON для повторного включения потока). Обслуживание принтера не может также определить причину сбоя, поэтому оно не может сообщить что делать дальше. Правильно спроектированный фильтр может обеспечить лучшую обработку сбоев. Некоторые принтеры могут послать сообщение, описывающее причину ошибки. -15-53- Другие указывают сбой сбросом носителя или отключением по- тока данных. Фильтр может служить, предоставляя больше информа- ции о сбое и регистрируя большую часть из них. Другое преимущество, которое может дать фильтр, состоит в ожидании сброса сбоя принтера и возобновлении печати. Это поз- воляет более эффективно выполнять печать при возникновении сбоя, так как запрос печати, который был прерван, не должен пе- репечатываться полностью. Только реальный фильтр, который рас- познает управляющие последовательности, используемые принтером, знает, где файл разбивается на страницы; таким образом только фильтр знает, насколько следует возвращаться в файле для кор- ректного рестарта. Обслуживание печати имеет простой интерфейс, позволяющий фильтру получать информацию о сбоях и осуществлять возможный рестарт. Механизм предупреждений (смотрите раздел "Предупрежде- ние о монтировании формы" под заголовком "Формы" в данной гла- ве) обрабатывается обслуживанием печати; интерфейсная програм- ма, управляющая фильтром, принимает все сообщения об ошибках от фильтра и помещает их в сообщение предупреждения, которое может быть послано вам. Таким образом вы видите описания сбоя, кото- рые выводит фильтр. Если вы устанавливаете конфигурацию принте- ра так, чтобы печать автоматически возобновлялась после сброса сбоя, то интерфейсная программа сохраняет фильтр в активном состоянии так, что он может возобновиться там, где был останов- лен. Делает ли любая программа хороший фильтр? Есть искушение использовать программу, такую как troff, nroff или схожую программу обработки слов, как фильтр. Однако, программы troff и nroff имеют средства, позволяющие пользовате- лям ссылаться на дополнительные файлы в исходном документе, они называются includes files (включенные файлы). Спулер LP не зна- ет об этих файлах и не ставит их в очередь с исходным докумен- том. Программа troff или nroff может завершиться аварийно, так как она не имеет доступа к этим дополнительным файлам. Другие программы могут иметь схожие средства, ограничивающие их ис- пользование в качестве фильтров. Далее следуют руководства, которые могут помочь вам выб- рать хороший фильтр: - Проверьте виды файлов, которые пользователи посылают на печать, и которые должны обрабатываться фильтром. Если они -15-53а- являются одиночными, то есть они не ссылаются на другие файлы, нужные фильтру,то вероятно фильтр в порядке. Про- верьте также, не ожидает ли фильтр любые другие файлы, кроме тех, которые посланы пользователем на печать. - Если есть ссылки на файлы внутри файлов, посланных на печать или, если фильтру нужны файлы, отличные от тех, ко- торые посланы пользователям, то фильтр вероятно выдаст сбой, так как он не может получить доступ к дополнительным файлам. Мы предполагаем, что вы не используете программу как фильтр, но что каждый пользователь выполняет программу перед посылкой файлов на печать. -15-54- Файлы, на которые имеется ссылка, которым всегда присвоены полные имена пути могут быть в порядке, но только, если фильтр используется для локальных запросов печати. При использовании для запросов, полученных от удаленной машины для печати на ва- шей машине, фильтр может все еще сбоить, если файлы, на которые ссылаются, расположены только на удаленной машине.  Определение фильтра Имеется несколько аспектов фильтра, которые вы должны оп- ределить для обслуживания печати. Они перечислены далее: Входные типы Это список типов файла, которые фильтр может об- работать. Большая часть фильтров может иметь только один входной тип, но обслуживание печати не ограничивает их одним типом. Некоторые типы файлов могут быть достаточно схожими для филь- тра, с которым они связаны. Вы можете использо- вать любые имена, которые вам понравятся, имея ввиду предел из 14 букв, цифр и тире (нет под- черкиваний). Так как обслуживание печати исполь- зует эти имена для согласования фильтра с типом файлов, вы должны быть последовательны в согла- шении по именам. Например, если более одного фильтра может принять тот же самый входной тип, используйте то же имя. Эти имена следует объ- явить пользователям так, чтобы они знали, как именовать их тип файла, когда они отсылают файл на печать. Выходные типы Это список типов файлов, которые фильтр может производить как выходные. Для каждого файла фильтр производит отдельный выходной тип, но он может иметь возможность менять этот тип по зап- росу. Имена выходных типов также ограничены 14 буквами, цифрами и тире. Эти имена должны либо соответствовать типам принтеров, имеющихся в ва- шей системе,либо должны соответствовать входным типам, обрабатываемым другими фильтрами. Обслу- живание печати собирает фильтры вместе в конве- йере оболочки для получения нового фильтра, если определяется, что необходимы несколько проходов различными фильтрами для преобразования файла. Маловероятно, что вам необходим этот -15-54а- уровень сложности, но обслуживание печати допускает это. Попытайтесь найти набор фильтров, которые берут как входные типы все другие файлы, которые пользователи могут захотеть распечатать и которые преобразуют эти файлы прямо в типы, которые могут обработать ваши принтеры. -15-55- Типы принтеров Это список типов принтеров, в которые фильтр мо- жет преобразовать файлы. В то время, как для большинства фильтров этот список идентичен вы- ходным типам, он может быть различным. Например, у вас может быть принтер, который имеет отдель- ный тип для целей инициализации (смотрите раздел "Принтер" под заголовком "Установка принтера" в данной главе), но который может распознавать несколько различных типов файлов. В сущности эти принтеры имеют внутренний фильтр, преобразующий различные типы в один, с которым они могут быть связаны. Таким образом фильтр может производить один из нескольких выходных типов, которые соот- ветствуют "типам файла", обрабатываемым принте- ром. Фильтр должен быть отмечен как работающий с типом принтера. В качестве другого принтера вы можете иметь две различные модели принтеров, ко- торые перечислены, как принимающие одни и те же типы файлов. Однако из-за небольшого различия при производстве, один принтер отличается по производимым результатам. Вы метите принтеры, как имеющие различные типы, скажем А и В, где В - это тот, который отличается. Вы создаете фильтр, который приспосабливает файлы к учету отклонений, производимому принтерами типа В. Так как этот фильтр необходим только для этих типов принтера, вам следует перечислить его, как рабо- тающий только для принтеров типа В. Для большей части принтеров и фильтров вы можете оставить эту часть определения фильтра пустой. Принтеры У вас могут быть некоторые принтеры, которые, хотя и имеют корректный тип для фильтра в других случаях не адекватны для выхода, который произ- водит фильтр. Например, вы можете захотеть наз- начить один принтер для быстрой передачи; на этот принтер посылаются только файлы, которые этот принтер может обрабатывать без фильтрации. Другие принтеры идентичного типа вы назначаете файлам, которым нужна большая фильтрация перед печатью. Вы метите фильтр как работающий только с последними принтерами. -15-55а- В большинстве случаев фильтр должен иметь возможность работы со всеми принтерами, которые принимают выход, производимый фильтром, поэтому вы можете оставить эту часть определения фильтра пустой. Тип фильтра обслуживание печати распознает быстрые фильтры и медленные фильтры. Быстрые фильтры метятся fast либо потому, что они имеют малые накладные рас- ходы при подготовке файла к печати, либо -15-56- потому, что они должны иметь доступ к принтеру, когда выполняются. Фильтр, который должен ре- гистрировать сбои принтера,должен быть быстрым принтером. Медленные фильтры являются прямой противоположностью. Фильтры, имеющие небольшие накладные расходы на подготовку файла и не имею- щие доступ к принтеру, должны метиться как мед- ленные. Обслуживание печати выполняет медленные фильтры в фоне без привязки к принтеру. Это поз- воляет пересылать вперед файлы, требующие быст- рой фильтрации (или без фильтрации), принтеры не простаивают, пока медленный фильтр работает с файлом, если печатаются другие файлы. Команда Это полное имя пути выполнения программы. Это фильтр. Если имеются любые фиксированные возмож- ности, которые необходимы программе, вы можете включить их здесь. Возможности Возможности, которые нужны программе фильтру, зависящие от различных режимов и других аспектов печати, которые могут быть зарегистрированы для фильтра. Это обсуждается подробнее позднее. После того, как вы собрали эту информацию о фильтре, вы можете использовать ее как вход для эквивалента sysadmsh коман- ды lpfilter(ADM). (В этом разделе не обсуждается строка команды lpfilter).Вы можете захотеть сначала зарегистрировать эту ин- формацию в вашем собственном файле для облегчения редактирова- ния информации при ее вводе. Далее вы можете передать файл на ввод. Однако при его вводе следует представить информацию сле- дующим образом: Input types: input-types-list Output types: output-types-list printer types: printer-type-list Printers: printers-list Filter type: fast or slow Command: command Options: template-list 1 - входные типы: вход-тип-список; 2 - выходные типы: выход-тип-список; 3 - типы принтера: принтер-тип-список; 4 - принтеры: принтер-список; 5 - тип фильтра: быстрый или медленный; -15-56а- 6 - команда: простая команда; 7 - возможности: шаблон-список. Информация может появиться в любом порядке. Не вся инфор- мация должна приводиться. Таблица 15.5 содержит значения по умолчанию, используемые для любой пропущенной информации. -15-57-  Таблица 15.5 Элементы фильтра по умолчанию Элемент По умолчанию ---------------------------------------------- входные типы любой выходные типы любой типы принтера любой принтеры любой тип фильтра медленный команда (нет умолчания) возможности (нет) Как вы можете видеть значения по умолчанию определяют очень гибкий фильтр, так что вы вероятно должны обеспечить по крайней мере входной и выходной тип (типы). Когда вы вводите список, разделяйте элементы в списке пробелами или запятыми. Шаблоны Вся информация объяснена, кроме template-list (шаблон-спи- сок). Далее следует информация о том, как регистрируются режимы и аспекты печати. Шаблон-список - это список шаблонов, разделенных запятыми, он имеет следующий вид:  keyword pattern = replacement keyword (ключевое слово) должно быть одним из перечисленных в следующей таблице. Оно метит шаблон, как регистрирующий отдель- ную характеристику печати. pattern (образец) - это либо значе- ние характеристики, либо звездочка (*), которая имеет смысл структурного нуля для любого значения. -15-58-  Таблица 15.6 Ключевые слова шаблона Характеристика Ключевое слово Возможные образцы ------------------------------------------- Тип содержимого INPUT Ъ1содержимое-тип Ъ 0 (вход) Тип содержимого OUTPUT Ъ1содержимое-тип Ъ 0 (выход) Тип принтера TERM Ъ1принтер-тип Ъ 0 Шаг символа CPI Ъ1целое Ъ 0 Длина страницы LENGTH Ъ1целое Ъ 0 Ширина страницы WIDTH целое Страницы для печати PAGES страница-список Набор символов CHARSET символ-набор Имя формы FORM форма-имя Число копий COPIES целое Режимы MODES режим Источником значений для этих шаблонов являются: - значения шаблонов INPUT и OUTPUT определяются типом фай- ла, который должен преобразовываться фильтром и выходным типом, который должен формироваться соответственно. Каждое из них будет иметь тип, зарегистрированный с фильтром. - значением шаблона TERM является тип принтера. - значения для шаблонов CPI, LPI, LEHGTH и WIDTH определя- ются запросом пользователя, используемой формой или значе- ниями по умолчанию для принтера. - значением для шаблона PAGES является список страниц, ко- торые должны печататься. Обычно - это список диапазонов страниц, либо пара чисел, либо отдельное число, каждый ди- апазон разделяется запятой (например 1-5, 6, 7 и 8). Одна- ко значение, заданное в возможности -Р для печати запроса передается неизменным. - значение шаблона CHARSET - это имя используемого набора символов. - значение для шаблона FORM - это имя печатаемой формы, если оно есть. - значение шаблона COPIES - это число копий файла, которое должно быть сделано. Если фильтр использует этот шаблон, -15-59- обслуживание печати уменьшает число копий фильтруемого файла, которое он печатает до 1, так как эта "отдельная копия" в действительности является множеством копий, про- изводимых фильтром. - значение шаблона MODES определяется возможностью -y ко- манды lp, команды, которую пользователь использует для пе- редачи запроса печати. Так как пользователь может задать несколько возможностей -y, то для шаблона MODES может быть несколько возможностей. Значения используются в порядке слева направо, заданном пользователем. Замена показывает, как значение шаблона задается для прог- раммы-фильтра. Это обычно литеральная возможность иногда со структурным нулем (*), включенным, чтобы показать, где присваи- вается значение. Несколько примеров показывают, как это работа- ет. Пример 1 Программа фильтр называется /usr/bin/npf. Программа имеет два входных типа nroff37 и X, производит выходной тип, называе- мый ТХ и работает с любым принтером типа ТХ. Программа принима- ет три возможности: -Xb Только для входного типа Х -l целое Для длины выходной страницы. -w целое Для ширины выходной страницы. Определение фильтра выглядит так: Input types: nroff37 и X Output types: ТХ printer types: ТХ Command: /usr/bin/npf Options: INPUT X = -Xb, LENGTH * = -l*, WIDTH * = -w* 1 - входные типы; 2 - выходные типы; 3 - типы принтера; 4 - команда; 5 - возможности. Пользователь посылает файл типа nroff37 и запрашивает, чтобы он печатался принтером с именем lp1 типа ТХ и запрашивает длину страницы 72: -15-59а-  lp -T nroff37 -d lp1 -o length=72 Этот фильтр вызывается обслуживанием печати для преобразо- вания файла. Фильтр вызывается как:  /usr/bin/npf -l72 -15-60- Пример 2 Другой пользователь посылает файл типа Х, который должен печататься на том же принтере со значениями длины и ширины, принимаемыми по умолчанию. Фильтр вызывается как:  /usr/bin/npf -Xb Пример 3 Программа фильтр называется /usr/bin/Х9700. Она имеет один входной тип, troff, производит выходной тип, называемый 9700 и будет работать с любым принтером типа 9700. Программа имеет од- ну фиксированную возможность -ib и принимает другие возможнос- ти:  -l integer  Для длины выходной страницы  -s name Для набора символов  -o portrait  или  -o landscape для "портретной" или "рельефной" ориентации бумаги. Вы решили, что вашим пользователям нужно дать только сок- ращения port и land ,когда они запрашивают ориентацию бумаги. Так как эти возможности не свойственны обслуживанию печати, пользователи задают их используя возможность -y команды lp. Определение фильтра выглядит следующим образом: Input types: troff Output types: 9700 Рrinter types: 9700 Command: /usr/bin/x9700 -ib Options: LENGTH * = -l *, CHARSET * = -s *, MODES port = -o portrait, MODES land = -o landscape 1 - входные типы; 2 - выходные типы; 3 - типы принтера; 4 - команда; 5 - возможности. -15-60а- (Последняя строка разбивается на три строки для облегчения чте- ния этого документа. Она должна вводиться, как отдельная стро- ка). Пользователь посылает файл типа troff на печать для прин- тера типа 9700 и запрашивает рельефную ориентацию, используя готический набор символов:  lp -T troff -S gothic -y land Этот фильтр вызывается обслуживанием печати для преобразо- вания файла следующим образом: -15-61-  /usr/bin/x9700 -ib -S gothic -o landscape Примечание Если образец или замещение должны включать запятую или знак равенства (=), отметьте их специальным значением, поставив перед ними обратную косую черту. Обратная косая черта перед этими двумя символами удаляется, когда используются образец или замещение. (Все другие обратные косые черты остаются). Добавление фильтра После завершения определения фильтра используйте одну из следующих команд для добавления его в систему: Ъ2 /usr/lib/lpfilter -f Ъ1filtername Ъ2-F filename Ъ2 /usr/lib/lpfilter -f Ъ1filtername -  sysadmsh пользователи выбирают: Printers-->Auxiliary-->Filter-->Change (Принтеры-->Вспомогательное-->Фильтр-->Изменение) Первая команда получает определение фильтра из файла, а вторая команда получает определение фильтра от вас через стан- дартный вход. filtername может быть любым по выбору длиной до 14 букв, цифр и символов подчеркивания. Если вам нужно изменить фильтр, введите одну из этих же команд. Вам необходимо лишь дать измененную информацию. Осталь- ная информация остается неизменной.  Удаление фильтра Обслуживание печати не имеет фиксированного предела на число фильтров, которое вы можете определить. Однако имеет смысл удалить ненужные более фильтры для устранения дополни- тельной обработки обслуживанием печати, которое должно прове- рить все фильтры для нахождения одного, который работает в дан- ной ситуации. Используйте следующую команду для удаления фильтра: Ъ2 /usr/lib/lpfilter -f Ъ1filtername -Х  sysadmsh пользователи выбирают: Printers-->Auxiliary-->Filter-->Remove (Принтеры-->Вспомогательное-->Фильтр-->Удаление) -15-62-  Проверка фильтра Вы можете проверить определение фильтра после добавления его к обслуживанию печати. Команда lpfilter отображает опреде- ление фильтра в форме, удобной для ввода, так что вы можете сохранить выход в файле для последующих ссылок. Вы можете использовать одну из следующих команд для про- верки определенного фильтра: Ъ2 /usr/lib/lpfilter -f Ъ1filtername -l Ъ2 /usr/lib/lpfilter -f Ъ1filtername Ъ2-l>filename  sysadmsh пользователи выбирают: Printers-->Auxiliary-->Filter-->List (Принтеры-->Вспомогательное-->Фильтр-->Список) Первая команда предоставляет определение фильтра на вашем экране. Вторая команда фиксирует это определение в файле, кото- рый позднее может использоваться для переопределения фильтра, если вы случайно удалили фильтр из обслуживания печати.  Предупреждение Добавление, изменение или удаление фильтров может привести к отмене стоящих в очереди запросов печати. Это происходит по- тому, что обслуживание печати оценивает каждый запрос печати, еще стоящий в очереди, чтобы увидеть, какие из них подвержены изменению фильтра. Запросы, которые более не печатаются из-за того, что фильтр удален или изменен, отменяются (с посылкой из- вещений пользователям, которые их послали). Может также возни- кать задержка в ответ на новые или измененные запросы печати, когда фильтры изменяются из-за многих характеристик, которые должны быть оценены для каждого запроса печати, еще стоящего в очереди. Эта задержка может стать ощутимой, если имеется боль- шое число запросов, нуждающихся в фильтрации. Из-за этого возможного влияния вы можете захотеть сделать изменения в фильтре во время периодов, когда обслуживание печа- ти не используется интенсивно. -15-62а- Чистка журнала запросов Оглавления /usr/spool/lp/temp и /usr/spool/lp/requests со- держат файлы, которые описывают каждый запрос, который был пос- лан обслуживанию печати LP. Каждый запрос имеет два файла по одному в каждом оглавлении, которые содержат информацию о зап- росе. Информация разбита для помещения более чувствительной ин- формации в оглавление /usr/spool/lp/requests, где она может -15-63- оставаться секретной. Файл запроса защищен от всех, кроме поль- зователя который послан запрос, в то время как файл /usr/spool/ lp/requests защищен даже от посылающего пользователя. Эти файлы остаются в оглавлениях только пока запрос нахо- дится в очереди. После завершения запроса информация в файлах объединяется и добавляется в файл /usr/spool/lp/logs/requests. Этот файл не удаляется обслуживанием печати LP, но может перио- дически чиститься, используя, например, средство cron. Смотрите описание команды crontab в главе "Использование команд планиро- вания заданиями: at, cron, batch" в документе. Элемент crontab, принимаемый по умолчанию и предлагаемый системе обслуживания печати LP, показан ниже: 13 3 * * * cd /usr/spool/lp/logs; if [ -f requests ]; then /bin/mv requests xyzzy; /bin/cp xyzzy requests; >xyzzy; /usr/lbin/agefile -c2 requests; /bin/mv xyzzy requests; fi (Это одна строка в crontab, но она разбита здесь на нес- колько строк для облегчения чтения). Если кратко, то этот эле- мент делает следующее: создает поколение файла, изменяет имя requests1 и пересылает копию прежнего дня в requests2. Число 2 в возможности -с. Программа agefile запрашивает хранение в фай- лах журнала информации двух предыдущих дней, отбрасывая более старую информацию в файлах журнала. Изменяя это число, вы може- те изменить сохраняемую информацию. С другой стороны, если вы хотите сохранять информацию чаще или хотите сбрасывать файл ча- ще, чем раз в день, измените время, когда элемент crontab вы- полняется изменением первых двух чисел. Текущие значения 13 и 3 приводят к тому, что сброс происходит каждый день в 3:13. Представляемый по умолчанию элемент crontab достаточен для хранения старых записей запросов печати для накопления в файло- вой системе накопления. Вы можете захотеть сконцентрировать ин- формацию в журнале запроса для получения доклада об использова- нии обслуживания печати LP или добавления в генерируемую учетную информацию. Вы можете получить различные процедуры, проверяющие файл и извлекающие информацию перед процедурой сброса. Журнал запросов имеет простую структуру, облегчающую изв- лечение данных с помощью общих команд оболочки UNIX. Запросы перечисляются в порядке, в котором они печатались и разделяются -15-63а- строками, которые присваивают запросу идентификатор. Каждая строка ниже линии разделения отмечается отдельной буквой, кото- рая идентифицирует вид информации, содержащейся в строке. Каж- дая буква отделяется от данных одним пробелом. Смотрите следую- щую таблицу для получения дополнительной информации. -15-64-  Таблица 15.7 Элементы журнала запросов Символ Содержимое строки ------------------------------------------- =  Это строка разделитель, содержащая идентификатор зап- роса, идентификатор пользователя и группы пользовате- лей, полное число байтов в первоначальных (нефильтро- ванных) файлах и время постановки запроса в очередь. Эти элементы разделяются запятыми и располагаются в порядке именования. Идентификатор пользователя, иден- тификатор группы и размеры имеют перед собой слова uid, gid или size соответственно. С  Число печатаемых копий D Назначение принтера или класса или слово any F Имя печатаемого файла. Строка повторяется для каждого печатаемого файла, и файлы печатаются в приведенном порядке. f Имя используемой формы H Тип используемой специальной обработки, расшифрован- ный (resume, hold,immediate). Единственное полезное значение, имеющееся в этой строке - это immediate. N Тип предупреждения, используемый при успешном завер- шении запроса печати. Тип - это буква М, если пользо- ватель был извещен почтой или W, если пользователь был извещен сообщением на терминал О Возможности -о Р Приоритет запроса печати p Список печатаемых страниц r Эта однобуквенная строка представлена, если пользова- тель запросил первичную обработку файлов (возможности -r команды lp) S Используемый набор символов или механизм печати s Выход запроса, как комбинация отдельных битов, выра- женная в шестнадцатеричной форме. В то время, как несколько битов используются внутренне спулером, наи- более важные биты перечислены ниже: 0х0004 Медленная фильтрация завершилась успешно 0х0010 Печать заверши- лась успешно 0х0040 Запрос отменен 0х0100 Запрос не смог выполнить фильтрацию или печать -15-65- T Титул, помещенный на странице заголовка t Тип содержимого, обнаруженный в файле (файлах) U Имя пользователя, который послал запрос печати x Медленный фильтр, используемый для запроса Y Список специальных режимов для фильтров, используемый для печати запроса y Быстрый фильтр, используемый для запроса z Принтер, используемый для запроса. Имеется различие для назначения (строка D), если запрос поставлен в очередь для любого принтера или класса принтеров или если запрос был переслан по другому назначению адми- нистратором обслуживания печати -15-66-  НАСТРОЙКА ОБСЛУЖИВАНИЯ ПЕЧАТИ Хотя обслуживание печати пытается быть достаточно гибким для обработки большей части потребностей принтеров и печати, оно не может быть полным. Вы можете купить принтер, который не вполне соответствует способу, каким обслуживание печати обраба- тывает принтеры, или же может иметь потребности печати, которые не соответствуют обслуживанию печати. Вы можете настроить обслуживание печати несколькими спосо- бами. В данном разделе рассказывается, как вы можете: - Настроить характеристики порта принтера, - Настроить базу данных terminfo, - Написать интерфейсную программу, и - Написать фильтр. Диаграмма на рисунке 15-1 дает обзор обработки запроса пе- чати: Рис. 15-1 Как процессы LP печатают запрос лазерного файла lp -d 1 - команда lp; 2 - конфигурация обслуживания печати; 3 - обслуживание печати (демон накопления); 4 - выборочный медленный фильтр; 5 - экранирование задания; 6 - инициализация принтера; 7 - база данных terminfo; 8 - стандартная интерфейсная программа; 9 - фильтр по умолчанию; 10 - выборочный быстрый фильтр; 11 - лазерный принтер; 12 - ключ; -15-66а- 13 - коммуникационный путь; 14 - управление процессами UNIX; 15 - управление процессами UNIX (альтернативное); 16 - доступ к данным; 17 - процесс UNIX; 18 - дисковые файлы. -15-67- Каждый запрос печати посылается демону накопления, который отслеживает все запросы. Демон создается, когда вы запускаете обслуживание печати LP. Системный процесс UNIX отвечает также за отслеживание состояния принтеров и медленных фильтров; когда принтер завершает печать пользовательского файла, демон начина- ет печать другого запроса, если он стоит в очереди. Вы можете настроить обслуживание печати настройкой или за- меной некоторых элементов, показанных на рисунке 15-1 (номера расшифровываются на диаграмме). 1. Для большинства принтеров вам необходимо лишь изменить конфигурацию принтера, запомненную на диске. В предыдущих разделах данной главы объясняется, как это сделать. Неко- торые из более зависящих от принтера данных конфигурации - это характеристики порта принтера: скорость передачи, чет- ность и так далее. 2. Для принтеров, которые не представлены в базе данных terminfo, вы можете добавить новый элемент, описывающий возможности принтера. Эта база данных используется в двух паралельных направлениях: экранирование запросов печати с целью убедиться, что принятые запросы могут обрабатываться нужным принтером и установка принтера так, что он готов печатать запрос. Например, если база данных terminfo не выдает принтер, ко- торый может задавать длину страницы, запрошенную принте- ром, то демон накопления отвергает запрос. С другой сторо- ны, если она показывает, что может выдать такой принтер, то та же самая информация используется интерфейсной прог- раммой для инициализации принтера. 3. Для особенно сложных принтеров или, если вы хотите доба- вить возможности, не обеспеченные стандартным обслуживани- ем печати LP, вы можете изменить стандартную интерфейсную программу. Эта программа отвечает за управление принтером: она печатает страницу заголовка, инициализирует принтер и вызывает фильтр для посылки копий файлов пользователя на принтер. 4аb. Для обеспечения связи между приложениями, используемой системой и принтерами, вы можете добавить медленные и быстрые фильтры. Каждый тип фильтра может преобразовать файл в другую форму, отображая один набор последователь- ностей выхода в другой, например, и может обеспечить спе- циальную установку, интерпретируя режимы печати, запрошен- ные пользователем. Медленные фильтры -15-67а- выполняются раздельно демоном для того, чтобы избежать за- держку принтера. Быстрые фильтры выполняются так, что их выход идет прямо на принтер, таким образом они могут вли- ять на управление принтером. -15-68-  Настройка характеристик порта принтера Вы должны быть уверены, что характеристики порта принтера, установленные обслуживанием принтера, соответствуют установкам коммуникации принтера. Стандартные установки порта принтера предназначены для работы с типичными файлами UNIX и многими принтерами, но они не работают со всеми файлами и принтерами. В действительности это не шаг настройки, так как стандартные средства обслуживания печати должны позволить вам задать уста- новки порта для каждого принтера. Однако это важный шаг в обес- печении работы принтера с обслуживанием печати, поэтому это описывается далее более подробно. Когда вы добавляете новый принтер, читайте документацию для него, чтобы понимать, что он ожидает от главной системы (обслуживания печати). Далее читайте страницу руководства для команды stty(C) в документе User's Reference. В ней суммированы различные характеристики, которые могут быть заданы для терми- нала или порта принтера. Только некоторые характеристики, перечисленные на странице руководства stty(C), важны для принтеров. Те, которые интересны для вас, перечислены в следующей таблице (но вы должны обра- щаться к странице руководства stty(C) в других случаях). Принтеры, соединенные напрямую с компьютерами, и принтеры, соединенные через сети, требуют, чтобы характеристики порта принтера устанавливались интерфейсной программой. Эти характе- ристики определяют коммуникации низкого уровня с принтером. Сю- да включена скорость передачи, использование управления потоком XON/XOFF, 7, 8 или другое количество битов на байт, четность, выходная постобработка. Стандартная интерфейсная программа ис- пользует команду stty для инициализации порта принтера, мини- мально устанавливая скорость передачи и другие характеристики по умолчанию. Характеристики по умолчанию, используемые стандартной ин- терфейсной программой, перечислены ниже.  Таблица 15.8 Возможности для stty по умолчанию По умолчанию Значение ------------------------------------------- 9600 скорость передачи 9600 cs8 8-битные байты -cstopb 1 стоп бит на байт -15-69- -parenb нет генерации четности ixon разрешено управление потоком XON/XOFF -ixany разрешен только XON для рестарта выхода opost поток данных постобработки как перечислено ниже? -oluc не отображайте строчные символы в прописные onlcr отображение подачи на одну строки в возврат каретки/подачу на одну строку -onlcr не отображается возврат каретки в подачу на одну строку -nocr выходные возвраты каретки даже с колонки 0 nl0 нет задержки после подачи на одну строку cr0 нет задержки после возвратов кареток tab0 нет задержки после табуляций bs0 нет задержки после возвратов vt0 нет задержки после вертикальных табуляций ff0 нет задержки после переводов страницы Вы можете обнаружить, что характеристики по умолчанию дос- таточны для ваших принтеров. Однако принтеры сильно различают- ся, так что может потребоваться задание различных характерис- тик. Смотрите описание команды stty в документе User's Reference. Если у вас имеется принтер, которому необходимы характе- ристики порта принтера, отличные от тех, которые обрабатываются программой stty, вам следует настроить интерфейсную программу. Когда вы добавляете новый принтер, вы можете определить дополнительный список характеристик порта, который будет ис- пользоваться при печати каждого файла пользователя. Задаваемый список будет использоваться после списка по умолчанию, так, что у вас не будет необходимости включать в ваш список элементы по умолчанию, которые вы не хотите изменять. Задайте дополнительный список следующим образом: Ъ2/usr/lib/lpadmin -p Ъ1printer-name Ъ2-o "stty='Ъ1stty-option-list'" Ъ2 sysadmsh пользователи выбирают: Printers-->Configure-->Parameters (Принтеры-->Конфигурация-->Параметры) Заметим, что двойные кавычки и одинарные кавычки необходи- мы, если вы даете более одного эл