В этом разделе обсуждается как печатать файлы, проверять очередь
печати, удалять задания из очереди, форматировать файлы до их печати и
производить настройку среды печати.
Наиболее простой путь для печати в операционной системе 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).
Для просмотра содержимого очереди печати используется команда lpq.
Команда запущенная без аргументов, она возвращает содержимое очереди
печати принтера по умолчанию.
Вывод возвращаемый lpq может быть полезен для многих целей.
$ lpq
lp is ready and printing
Rank Owner Job Files Total Size
active mwf 31 thesis.txt 682048 bytes
Другое полезное свойство любой системы печати это возможность отмены
задания, которое было перед этим помещено в очередь.
Чтобы сделать это используйте команду lprm.
$ lprm -
Показанная выше команда отменяет все задания печати владельцем котрых
является пользователь выполнивший эту команду. Для того чтобы отменить
одиночное задание печати, надо сначала получить номер задания с
помощью команды lpq и затем сообщить полученный номер команде
lprm. Например,
$ lprm 31
отменит задание номер 31 (thesis.txt) на принтере по умолчанию.
Программа 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
Небольшое замечание 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 вручную, вы можете
иметь множество определений принтера для каждого физического
принтера. Каждое для различных размеров бумаги, разрешений и т.п.
Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!