Next Previous Contents

## 37. Печать под Linux

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

## 37.1 История Linux Printing

Система печати Linux -- lp система -- это порт исходного кода написанного в Университете Калифорнии для BSD версии операционной системы UNIX.

## 37.2 Печать файлов используя lpr

Наиболее простой путь для печати в операционной системе Linux это посыл файла для печати прямо на устройство печати. Для того чтобы сделать это используется команда cat. Как пользователь `root`, наберите что-то подобное этому

> `

>     # cat thesis.txt > /dev/lp

> `

В этом случае, `/dev/lp` это символическая ссылка на устройство печати -- это может быть матричный или лазерный принтер, typesetter, или плоттер. (См. ln(1) для более полной информации о символических ссылках)

В целях безопасности, только пользователь `root` и пользователи в той же группе что и демон принтера могут писать прямо на принтер. Поэтому такие команды как lpr, lprm, and lpq должны использоваться для доступа к принтеру.

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

Когда выполняется команда lpr, она первым делом копирует заданный файл в определенную директорию (spool directory), где файл остается пока lpd печатает его. Когда lpd сообщают, что есть файл для печати, он запускает копию своего процесса (что программисты называют forking). Эта копия процесса будет печатать наш файл в то время как оригинальный процесс будет ждать других запросов. Это позволяет обслуживать много заданий печати в одно время.

Синтаксис lpr(1) очень прост,

> `

>     $ lpr [ опции ] [ имя_файла ... ]

> `

Если `имя_файла` не задано, lpr ожидает ввод данных со стандартного вводаexpects (обычно клавиатура, или вывод другой программы). Это позволяет пользователям перенаправлять вывод комманд в очередь печати. Вот так,

> `

>     $ cat thesis.txt | lpr

> `

или,

> `

>     $ pr -l60 thesis.txt | lpr

> `

Команда lpr принимает несколько аргументов командной строки что позволяет пользователям контролировать его работу. Вот некоторые из часто используемых аргументов: -Pprinter определяет какой принтер использовать, -h suppresses printing of the burst page, -s создает символическую ссылку вместо копирования файла в директорию спула (полезно для больших файлов), и -#num определяет количество копий печати. Пример взаимодействия с lpr может выглядеть подобно этому

> `

>     $ lpr -#2 -sP dj thesis.txt

> `

Эта команда создает символическую ссылку на файл `thesis.txt` в директории спула для принтера названного dj, где он будет обработан демоном печати lpd. Затем будет напечатана вторая копия файла `thesis.txt`.

Для просмотра всех опций, которые может принимать lpr, смотрите мануал по lpr(1).

## 37.3 Просмотр очереди печати с помощью lpq

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

Вывод возвращаемый lpq может быть полезен для многих целей.

> `

>     $ lpq

>     lp is ready and printing

>     Rank   Owner      Job  Files                            Total Size

>     active mwf        31   thesis.txt                       682048 bytes

> `

## 37.4 Отмена задания печати с использованием команды lprm

Другое полезное свойство любой системы печати это возможность отмены задания, которое было перед этим помещено в очередь. Чтобы сделать это используйте команду lprm.

> `

>     $ lprm -

> `

Показанная выше команда отменяет все задания печати владельцем котрых является пользователь выполнивший эту команду. Для того чтобы отменить одиночное задание печати, надо сначала получить номер задания с помощью команды lpq и затем сообщить полученный номер команде lprm. Например,

> `

>     $ lprm 31

> `

отменит задание номер 31 (`thesis.txt`) на принтере по умолчанию.

## 37.5 Контроль демона lpd с помощью lpc

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

> `

>     $ lpc

> `

Команда показанная выше запускает программу lpc. По умолчанию, она входит в интерактивный режим и вы можете начинать вводить команды. Другие опции используются для запуска команды lpc в командной строке.

> `

>     $ lpc status all

> `

Список всех возможных команд перечислен на странице руководства команды lpd, но здесь перечислено несколько главных команд, которые вы должны знать. Любые команды обозначенные как option могут быть либо именем принтера (lp, print, etc) или ключевым словом `all`, которое обозначает все принтера.

- disable option - запрещает добавление любых новых заданий печати
- down option - запрещает все задания на принтере
- enable option - разрешает ввод новых заданий в очередь печати
- quit (or exit) - покинуть lpc
- restart option - перезагрузить lpd для данного принтера
- status option - статус печати принтера
- up option - разрешить все и стартовать новый демон lpd

## 37.6 Использование printtool в RedHat

Небольшое замечание here on RedHat's amazing printtool program.

Она умеет делать все, что должен делать magicfilter. RedHat уже установил много программ для использования фильтров. Здесь показано как установить принтер HP LJ 4L, подключенный к параллельному порту, в RedHat 4.0 (эта процедура должна быть одинаковой для всех версий RH).

- Войдите как root и запустите printtool (если вы используете команду su, вы должны установить SETENV DISPLAY :0.0 и xhost +).
- Щелкните кнопку "Add" ("Добавить"), и нажмите "OK" для локального принтера.
- Заполните поле именем устройства печати (например /dev/lp1)
- Заполните поле входного фильтра - Выберите тип принтера, разрешение и размер бумаги (ljet4, 300x300 и letter для нашего примера)
- Нажмите "OK", и перезапустите lpd.

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

Next Previous Contents