355 500 произведений, 25 200 авторов.

Электронная библиотека книг » Уильям Шоттс » Командная строка Linux » Текст книги (страница 21)
Командная строка Linux
  • Текст добавлен: 12 апреля 2017, 12:30

Текст книги "Командная строка Linux"


Автор книги: Уильям Шоттс


Жанр:

   

ОС и Сети


сообщить о нарушении

Текущая страница: 21 (всего у книги 30 страниц)

В последнем упражнении с программой groff мы вновь вернемся к нашему старому доброму другу – файлу distros.txt. На этот раз мы воспользуемся программой tbl, которая применяется для форматирования таблиц, чтобы сформировать наш список дистрибутивов Linux. В этом упражнении мы задействуем сценарий для sed, созданный ранее, и с его помощью добавим разметку в поток текста, который затем передадим программе groff.

Сначала изменим сценарий для sed, добавив в него вызовы, необходимые программе tbl. Откройте сценарий distros.sed в текстовом редакторе и измените его, как показано ниже:

# Сценарий для sed, создающий отчет о дистрибутивах Linux

1 i

.TS

center box;

cb s s

cb cb cb

l n c.

Linux Distributions Report

=

Name    Version  Released

_

s/([0-9]{2})/([0-9]{2})/([0-9]{4})$/3-1-2/

$ a

.TE

Обратите внимание, что для корректной работы сценария слова Name Version Released должны разделяться символами табуляции, а не пробелами. Сохраним получившийся файл с именем distros-tbl.sed. Программа tbl использует запросы .TS и .TE как метки начала и конца таблицы. Строки, следующие за запросом .TS, определяют глобальные свойства таблицы, в нашем случае выравнивание по центру страницы и окружение внешней рамкой. Остальные строки описывают форматирование строк таблицы. Если теперь снова запустить наш конвейер составления отчета с новым сценарием для sed, мы получим следующее:

[me@linuxbox ~]$ sort -k 1,1 -k 2n distros.txt | sed -f distros-tbl.sed | groff -t -T ascii 2>/dev/null

                 +–+

                 | Linux Distributions Report   |

                 +–+

                 | Name    Version    Released  |

                 +–+

                 |Fedora     5       2006-03-20 |

                 |Fedora     6       2006-10-24 |

                 |Fedora     7       2007-05-31 |

                 |Fedora     8       2007-11-08 |

                 |Fedora     9       2008-05-13 |

                 |Fedora    10       2008-11-25 |

                 |SUSE      10.1     2006-05-11 |

                 |SUSE      10.2     2006-12-07 |

                 |SUSE      10.3     2007-10-04 |

                 |SUSE      11.0     2008-06-19 |

                 |Ubuntu     6.06    2006-06-01 |

                 |Ubuntu     6.10    2006-10-26 |

                 |Ubuntu     7.04    2007-04-19 |

                 |Ubuntu     7.10    2007-10-18 |

                 |Ubuntu     8.04    2008-04-24 |

                 |Ubuntu     8.10    2008-10-30 |

                 +–+

Параметр -t требует от groff обработать поток текста с помощью tbl. Аналогично, параметр -T требует вывести данные в формате ASCII вместо используемого по умолчанию PostScript.

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

[me@linuxbox ~]$ sort -k 1,1 -k 2n distros.txt | sed -f distros-tbl.sed | groff -t > ~/Desktop/foo.ps

Рис. 21.2. Изображение законченной таблицы

Заключительное замечание

Учитывая, что текст занимает главенствующее положение в Unix-подобных операционных системах, было бы оправданно ожидать наличия большого числа инструментов для работы с текстом и его форматирования. И, как мы увидели, эти ожидания небеспочвенны! Простые инструменты форматирования, такие как fmt и pr, находят широкое применение в сценариях, производящих короткие документы, тогда как groff (с сопутствующими программами) можно использовать для создания книг. Возможно, вам никогда не придется использовать инструменты командной строки для написания технических статей (хотя многие делают это!), но знать о такой возможности вам не помешает.

22. Печать

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

Далее мы обсудим следующие команды:

• pr – преобразует текстовые файлы для печати.

• lpr – печатает файлы.

• lp – печатает файлы (System V).

• a2ps – форматирует файлы для печати на принтере с поддержкой PostScript.

• lpstat – выводит информацию о состоянии принтера.

• lpq – выводит информацию о состоянии очереди печати.

• lprm – отменяет задания печати.

• cancel – отменяет задания печати (System V).

Краткая история поддержки печати

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

Печать в ночное время

Подобно компьютерам, принтеры в эпоху, предшествующую появлению персональных компьютеров, были большими, дорогими и централизованными. Типичный пользователь 1980-х работал за терминалом на порядочном удалении от ЭВМ. Принтер же размещался рядом с ЭВМ и находился под неусыпным наблюдением операторов.

Когда принтеры были дорогими и централизованными, что было обычно в ранний период развития Unix, нормальной практикой считалось совместное использование принтера несколькими пользователями. Чтобы идентифицировать принадлежность задания печати определенному пользователю, в начале каждого задания печаталась титульная страница с именем пользователя. Персонал, обслуживающий ЭВМ, извлекал корзину с напечатанными за день документами и доставлял их конкретным пользователям.

Символьные принтеры

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

Во-вторых, что особенно важно, ранние принтеры использовали фиксированный набор символов, встроенный непосредственно в устройство. Например, принтер с «ромашкой» мог печатать только символы, присутствующие на лепестках «ромашки». В результате такие принтеры действовали как высокоскоростные печатающие машинки. Как большинство печатающих машинок, они печатали моноширинными шрифтами (шрифтами с фиксированной шириной символов). Это означает, что все символы имели одинаковую ширину. Печать символов выполнялась в фиксированных позициях на бумаге, и область печати имела фиксированное число знакомест. Большинство принтеров выводило 10 символов на дюйм (Characters Per Inch, CPI) по горизонтали и 6 строк на дюйм (Lines Per Inch, LPI) по вертикали. В соответствии с этой схемой на странице формата US-letter помещалось 85 символов в ширину и 66 строк в высоту. С учетом отступов слева и справа считалось, что максимальная ширина печати составляет 80 символов в строке. Это объясняет, почему дисплеи терминалов (и наших эмуляторов терминалов) обычно имеют ширину 80 символов. Таким способом обеспечивался режим «что вижу, то и получаю» (What You See Is What You Get, WYSIWYG) отображения текста перед печатью с применением моноширинного шрифта.

Данные, посылаемые на принтер с ударным механизмом, – это простой поток байтов, соответствующих печатаемым символам. Например, чтобы напечатать a, посылался код символа 97 в наборе ASCII. Кроме того, в начале набора ASCII были выделены коды для управления кареткой принтера и бумагой, например, для возврата каретки в исходное положение, перевода строки, перевода формата (страницы) и др. С помощью управляющих кодов можно было имитировать некоторые эффекты, такие как жирная печать, когда принтеру посылался печатаемый символ, символ забоя (backspace) и снова тот же печатаемый символ, благодаря чему на бумаге получалось более темное изображение. В этом легко убедиться, если с помощью nroff отобразить страницу справочного руководства и исследовать вывод с помощью команды cat -A:

[me@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | nroff -man | cat -A | head

LS(1)                       User Commands                       LS(1)

$

$

$

N^HNA^HAM^HME^HE$

       ls – list directory contents$

$

S^HSY^HYN^HNO^HOP^HPS^HSI^HIS^HS$

       l^Hls^Hs [_^HO_^HP_^HT_^HI_^HO_^HN]... [_^HF_^HI_^HL_^HE]...$

Символы ^H (CTRL-H) – это символы забоя (backspace), используемые для создания эффекта жирной печати. Аналогично для получения эффекта подчеркивания можно использовать последовательность из символов забоя/подчеркивания.

Графические принтеры

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

Однако переход от символьной системы печати к графической вызвал появление огромных технических проблем. И вот почему. Число байтов, которое нужно послать символьному принтеру для заполнения страницы, можно было подсчитать с помощью простой формулы (если предположить, что на странице умещается 60 строк, по 80 символов в каждой): 60 х 80 = 4800 байт.

Для сравнения: лазерному принтеру с качеством печати 300 точек на дюйм (Dot Per Inch, DPI) для покрытия страницы размером 8 х 10 дюймов (203 х 254 мм) нужно послать (8 х 300) х (10 х 300) х 8 = 900 000 байт.

Многие медленные сети персональных компьютеров просто не могли достаточно быстро пропустить почти 1 мегабайт данных, чтобы напечатать на лазерном принтере полную страницу, поэтому требовалось какое-то новое решение.

Таким решением стало изобретение языка описания страниц. Язык описания страниц (Page Description Language, PDL) – это язык программирования, описывающий содержимое страницы. Программы на этом языке как бы говорили: «перейти в эту позицию, нарисовать символ a шрифтом Helvetica с кеглем 10 пунктов, перейти в эту позицию...», пока вся страница не была описана. Первым основным языком PDL стал PostScript, разработанный в Adobe Systems, он все еще широко используется в наше время. Язык PostScript – это полноценный язык программирования, ориентированный на книгопечатание и создание разного вида графических изображений. Он включает поддержку 35 стандартных высококачественных шрифтов плюс может принимать определения дополнительных шрифтов во время выполнения. На первом этапе поддержка PostScript встраивалась непосредственно в принтеры. Это решало проблему передачи данных. Даже при том, что типичная программа на PostScript по объему превышала простой поток байтов для символьных принтеров, ее размер был намного меньше числа байтов, необходимых для представления целой страницы.

Принтер с поддержкой PostScript принимал на входе программу на PostScript. Принтер имел собственный процессор и память (нередко принтеры имели большую вычислительную мощность, чем компьютеры, к которым они подключались) и выполнял специальную программу, называвшуюся интерпретатором PostScript, которая читала входящую программу на PostScript и отображала результат во внутреннюю память принтера, таким образом формируя шаблон из битов (точек) для вывода на бумагу. Такой процесс отображения чего-то в большой битовый шаблон (его называют bitmapрастр) в общем случае называют процессором растровых изображений (Raster Image Processor, RIP).

Спустя годы компьютеры и сети стали намного быстрее. Это позволило переместить RIP с принтера в компьютер, что, в свою очередь, позволило удешевить высококачественные принтеры.

Многие современные принтеры все еще способны принимать потоки символов, но большинство  уже не поддерживают эту возможность. Они полагаются на RIP компьютера и ожидают получить поток битов для печати их в виде точек. Существуют также современные PostScript-принтеры.

Печать в Linux

Современные системы Linux используют два комплекта программного обеспечения для печати. Первый, CUPS (Common Unix Printing System – общая система печати для Unix), включает драйверы печати и средства управления заданиями; второй, Ghostscript, интерпретатор PostScript, действует как RIP.

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

Подготовка файлов к печати

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

pr – преобразование текстовых файлов для печати

Мы уже касались программы pr в предыдущей главе. А теперь исследуем все богатство ее параметров, используемых при печати. В краткой исторической справке развития технологий печати рассказывалось, что символьные принтеры использовали мноноширинные шрифты, что обеспечивало фиксированное число символов в строке и строк на странице. Программа pr используется для выравнивания текста в соответствии с заданным размером страницы, с учетом дополнительных заголовков и полей на странице. Наиболее часто используемые параметры перечислены в табл. 22.1.

Таблица 22.1. Наиболее часто используемые параметры команды pr

Параметр

Описание

+первая

[:последняя]

Вывести диапазон страниц, начиная со страницы с номером первая и заканчивая страницей с номером последняя (если указано)

–колонок

Вывести содержимое страницы в указанное число колонок

–a

По умолчанию, когда задан вывод в несколько колонок, колонки организованы по вертикали. Параметр -a (across – поперек) позволяет организовать  колонки по горизонтали

–d

Вывести с двойным интервалом

–D формат

Формат вывода даты в заголовке страницы. Описание строки формата можно найти в странице справочного руководства (man) для команды date

–f

Использовать символ перевода формата вместо возврата каретки для отделения страниц друг от друга

–h заголовок

Текст для вывода в центре заголовка страницы вместо имени файла

–l длина

Длина страницы. По умолчанию длина устанавливается равной 66 строкам (соответствует формату US-letter с плотностью печати 6 строк на дюйм)

–n

Нумеровать строки

–o отступ

Создать левое поле, выполнив отступ указанного размера (в символах)

–w ширина

Ширина страницы в символах. По умолчанию ширина устанавливается равной 72 символам

Программа pr часто используется в конвейерах в роли фильтра. Следующий пример создает список содержимого каталога /usr/bin и с помощью pr выводит его в три колонки с разбивкой на страницы:

[me@linuxbox ~]$ ls /usr/bin | pr -3 -w 65 | head

2012-02-18 14:00                                       Page 1

[                     apturl                bsd-write

411toppm              ar                    bsh

a2p                   arecord               btcflash

a2ps                  arecordmidi           bug-buddy

a2ps-lpr-wrapper      ark                   buildhash

Отправка задания печати на принтер

Пакет программ печати CUPS поддерживает два метода печати, исторически используемых в Unix-подобных системах. Первый метод, с названием Berkeley, или LPD (используется в BSD-версиях Unix), основан на использовании программы lpr; второй метод, с названием SysV (используется в версиях Unix System V), основан на использовании программы lp. Обе программы работают примерно одинаково. Выбор той или иной зависит от личных предпочтений.

lpr – печать файлов (в стиле Berkeley)

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

[me@linuxbox ~]$ ls /usr/bin | pr -3 | lpr

В этом случае отчет будет выведен на принтер, используемый системой по умолчанию. Для вывода файла на другой принтер используйте параметр -P:

lpr -P имя_принтера

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

[me@linuxbox ~]$ lpstat -a

ПРИМЕЧАНИЕ

Многие дистрибутивы Linux позволяют определять фиктивные «принтеры», которые выводят результат в файл в формате PDF, а не на физический принтер. Это очень удобно для экспериментов с командами печати. Запустите свою программу настройки принтеров и посмотрите, поддерживает ли она такую возможность. Чтобы включить ее, в некоторых дистрибутивах может понадобиться установить дополнительные пакеты (такие, как cups-pdf).

В табл. 22.2 перечислены некоторые часто используемые параметры команды lpr.

Таблица 22.2. Наиболее часто используемые параметры команды lpr

Параметр

Описание

–# число

Число копий

–p

Вывести на каждой странице заголовок с датой, временем, именем задания и номером страницы. Этот так называемый параметр структурной печати («pretty print») можно использовать для печати текстовых файлов

–P принтер

Имя принтера для вывода. Если принтер не указан, используется системный принтер по умолчанию

–r

Удалить файлы после печати. Может пригодиться при использовании программ, создающих временные файлы для печати

lp – печать файлов (в стиле System V)

Подобно lpr, программа lp принимает файлы или данные со стандартного ввода. Отличается от lpr поддержкой иного (немного более сложного) набора параметров. Наиболее часто используемые параметры перечислены в табл. 22.3.

Вернемся к нашему списку содержимого каталога, но на этот раз выведем его с плотностью печати 12 CPI и 8 LPI и с левым полем размером полдюйма. Обратите внимание, что нам пришлось откорректировать параметры pr, чтобы учесть новые размеры страницы:

[me@linuxbox ~]$ ls /usr/bin | pr -4 -w 90 -l 88 | lp -o page-left=36 -o cpi=12 -o lpi=8

Таблица 22.3. Наиболее часто используемые параметры команды lp

Параметр

Описание

–d принтер

Имя принтера для вывода. Если принтер не указан, используется системный принтер по умолчанию

–n число

Число копий

–o landscape

Вывести в альбомной ориентации

–o fitplot

Масштабировать файл, чтобы уместить на странице. Этот параметр может пригодиться при печати изображений, например файлов в формате JPEG

–o scaling=число

Масштабировать файл с указанным коэффициентом. Значение 100 соответствует полному заполнению страницы. Значения меньше 100 уменьшают размеры области печати, тогда как значения больше 100 – увеличивают, вследствие чего файл печатается на нескольких страницах

–o cpi=число

Установить плотность печати символов на дюйм (CPI) как указанное число символов на дюйм. По умолчанию это значение устанавливается равным 10

–o lpi=число

Установить плотность печати строк на дюйм (LPI) как указанное число строк на дюйм. По умолчанию это значение устанавливается равным 6

–o page-bottom=пунктов

–o page-left=пунктов

–o page-right=пунктов

–o page-top=пунктов

Размеры полей. Значения выражаются в пунктах – единице измерения, используемой в типографском деле. Один дюйм соответствует 72 пунктам

–P страницы

Список страниц для печати. Список может иметь вид перечисления номеров страниц через запятую и/или диапазонов, например: 1,3,5,7-10

Этот конвейер выводит список в четыре колонки с меньшим размером шрифта, чем принято по умолчанию. Увеличение плотности символов на дюйм позволило уместить больше колонок на странице.

Еще одна возможность: a2ps

Программа a2ps довольно интересна. Как можно догадаться по ее имени, это программа преобразования одного формата в другой, но не только. Первоначально ее имя означало ASCII to PostScript (из ASCII в PostScript) и она использовалась для подготовки текстовых файлов к печати на принтерах с поддержкой PostScript. С годами, однако, возможности программы росли, и теперь ее имя означает Anything to PostScript (все что угодно – в PostScript). Несмотря на то что имя программы говорит, что это – программа преобразования одного формата в другой, в действительности она является программой печати. Она выводит результаты своей работы в свой вывод по умолчанию – в системный принтер, а не в стандартный вывод. По умолчанию программа действует как программа «структурной печати», улучшая формат вывода. Мы можем с ее помощью создать PostScript-файл на своем рабочем столе:

[me@linuxbox ~]$ ls /usr/bin | pr -3 -t | a2ps -o ~/Desktop/ls.ps -L 66

[stdin (plain): 11 pages on 6 sheets]

[Total: 11 pages on 6 sheets] saved into the file `/home/me/Desktop/ls.ps'

Здесь мы обработали поток с помощью программы pr, передав ей параметр -t (чтобы опустить верхние и нижние колонтитулы), и передали результат программе a2ps, указав ей файл для вывода (параметр -o) и плотность печати 66 строк на странице (параметр -L), чтобы разбить вывод pr на страницы. Если открыть получившийся файл с помощью соответствующего средства просмотра, можно увидеть, что он выглядит, как показано на рис. 22.1.

Рис. 22.1. Результат работы a2ps

Как видите, по умолчанию используется формат вывода «две страницы рядом». В этом формате содержимое двух страниц будет напечатано на одном листе бумаги. a2ps добавляет также свои хорошо отформатированные колонтитулы.

a2ps имеет множество параметров, они перечислены в табл. 22.4.

Таблица 22.4. Параметры команды a2ps

Параметр

Описание

–center-title текст

Текст для заголовка страницы в центре

–columns число

Число колонок для вывода страниц. По умолчанию 2

–footer текст

Текст для нижнего колонтитула

–guess

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

–left-footer текст

Текст для нижнего колонтитула слева

–left-title текст

Текст для заголовка страницы слева

–line-numbers=интервал

Выводить номера строк через заданный интервал

–list=defaults

Вывести настройки по умолчанию

–list=категория

Вывести возможные варианты настроек для указанной категории, где категорией может быть: delegations (внешние программы, которые будут использоваться для преобразования данных), encodings (кодировки), features (возможности), variables (переменные), media (размеры бумаги и пр.), ppd (известные описания принтеров PostScript), printers (принтеры), prologues (фрагменты кода, предшествующие нормальному выводу), style-sheets (поддерживаемые стили вывода), user-options (параметры пользователя)

–pages диапазон

Печатать страницы из указанного диапазона

–right-footer текст

Текст для нижнего колонтитула справа

–right-title текст

Текст для заголовка страницы справа

–rows число

Разместить страницы в указанное число рядов. По умолчанию 1

–B

Не выводить заголовки страниц

–b текст

Текст заголовка страницы

–f размер

Использовать шрифт указанного размера

–l число

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

–L число

Число строк на странице

–M имя

Формат бумаги, например A4

–n число

Вывести указанное число копий каждой страницы

–o файл

Вывести результат в указанный файл. Если в качестве имени файла указан - (дефис), используется стандартный вывод

–P принтер

Имя принтера для вывода. Если принтер не указан, используется системный принтер по умолчанию

–R

Вывести в книжной ориентации

–r

Вывести в альбомной ориентации

–T число

Установить табулостопы через каждое указанное число символов

–u текст

Текст для нижнего слоя на странице («водяной знак»)

Это далеко не полный список. В действительности программа a2ps имеет намного больше параметров.

ПРИМЕЧАНИЕ

Программа a2ps продолжает активно развиваться и поныне. В ходе ее тестирования я заметил некоторые различия в поведении этой программы в разных дистрибутивах. В CentOS 4 вывод всегда по умолчанию производился в стандартный вывод. В CentOS 4 и Fedora 10 по умолчанию использовался формат бумаги A4, несмотря на то что система была настроена на использование бумаги формата US-Letter. Мне удалось преодолеть эту проблему, только явно передав соответствующие параметры. В Ubuntu 8.04 программа a2ps действует, как описывается в документации.

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

Наблюдение за заданиями печати и управление ими

Поскольку система печати в Unix изначально проектировалась для обработки заданий печати от нескольких пользователей, соответственно и система CUPS проектировалась исходя из той же предпосылки. Для каждого принтера создается своя очередь печати, в которой задания хранятся, пока не будут переданы принтеру. В составе CUPS имеется несколько программ командной строки для управления состоянием принтеров и очередей печати. Подобно программам lpr и lp, эти управляющие программы создавались после появления соответствующих программ из систем Berkeley и System V.

lpstat – вывод информации о состоянии принтера

Программу lpstat удобно использовать для определения имен и доступности принтеров в системе. Например, если к системе подключены два принтера – физический (с именем printer) и виртуальный, для вывода в файлы PDF (с именем PDF), – их состояние можно проверить так:

[me@linuxbox ~]$ lpstat -a

PDF accepting requests since Mon 05 Dec 2011 03:05:59 PM EST

printer accepting requests since Tue 21 Feb 2012 08:43:22 AM EST

Кроме того, с ее помощью можно получить более подробное описание конфигурации системы печати:

[me@linuxbox ~]$ lpstat -s

system default destination: printer

device for PDF: cups-pdf:/

device for printer: ipp://print-server:631/printers/printer

В этом примере видно, что имя printer соответствует системному принтеру по умолчанию и что это сетевой принтер, для взаимодействий с которым используется протокол печати через Интернет (Internet Printing Protocol, ipp://), физически подключенный к системе с именем print-server.

В табл. 22.5 перечислены некоторые часто используемые параметры команды lpstat.

Таблица 22.5. Наиболее часто используемые параметры команды lpstat

Параметр

Описание

–a [принтер...]

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

–d

Вывести имя системного принтера по умолчанию

–p [принтер...]

Вывести состояние указанного принтера. Если принтер не указан, выводится информация обо всех принтерах

–r

Вывести состояние сервера печати

–s

Вывести сводную информацию о состоянии

–t

Вывести полный отчет о состоянии

lpq – вывод информации о состоянии очереди печати

Программа lpq используется для получения информации о состоянии очереди печати. С ее помощью можно увидеть состояние очереди и список заданий в ней. Ниже приводится пример вывода информации о состоянии пустой очереди для системного принтера по умолчанию с именем printer:

[me@linuxbox ~]$ lpq

printer is ready

no entries

Если принтер не указан (с помощью параметра -P), выводится информация об очереди для системного принтера по умолчанию. Если сформировать задание для печати и затем вывести информацию о состоянии очереди, это задание появится в списке:

[me@linuxbox ~]$ ls *.txt | pr -3 | lp

request id is printer-603 (1 file(s))

[me@linuxbox ~]$ lpq

printer is ready and printing

Rank    Owner   Job     File(s)         Total Size

active  me      603     (stdin)         1024 bytes

lprm и cancel – отмена заданий печати

В составе CUPS имеется две программы для завершения заданий печати и удаления их из очереди. Одна программа – в стиле Berkeley (lprm), а другая – в стиле System V (cancel). Они несколько отличаются поддерживаемыми параметрами, но, по сути, выполняют одну и ту же операцию. Если использовать пример с заданием печати, рассматриваемый выше, мы могли бы остановить выполнение задания и удалить его:

[me@linuxbox ~]$ cancel 603

[me@linuxbox ~]$ lpq

printer is ready

no entries

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


    Ваша оценка произведения:

Популярные книги за неделю