Система печати в Unix. LP spoolling






          (описана система печати в System V)

     Печатать,  конечно,  можно и так: cat file > /dev/lp. Но в
многопользовательской системе такой фокус  не  всегда  пройдет.
Поэтому печатаемый файл ставят в очередь на печать.

     Имеем принтер. У принтера есть
     ИМЯ_ПРИНТЕРА - придумывается администратором.
     ПОРТ_ПРИНТЕРА   -   специальный   файл   в   который  надо
выталкивать данные для печати.
     ИНТЕРФЕЙСНАЯ_ПРОГРАММА  -  программа,  которая  как  раз и
будет этим заниматься.

     Если  у  нас  нормально  сконфигурена  система  печати, то
печататься можно так:

    lp -d ИМЯ_ПРИНТЕРА  file
        или,  если мы хотим напечатать на "default" принтере
    cat file | lp

    lpstat          Посмотреть в каком состоянии очередь печати

    cancel [идентификатор_запроса ...] [принтер ...]
                    Срубить запрос на печать

     lp  просто  складывает  файл в SPOOL КАТАЛОГ. ДЕМОН ПЕЧАТИ
lpsched обнаруживает  вновь  поступивший  файл,  ставит  его  в
очередь  на печать, и, когда очередь доходит, запускает наконец
ИНТЕРФЕЙСНУЮ ПРОГРАММУ, вход  которой  берется  из  печатаемого
файла, а ее вывод перенаправляется на ПОРТ_ПРИНТЕРА.

Подключить к системе новый принтер


lpshut # на время реконфигурации надо "гасить" lpsched lpadmin -pLJ_printer -i/usr/lib/lp/model/lj_print -v/dev/lpt2 или lpadmin -pNash_Nowyj_Printer -mstandard -v/dev/contty enable Nash_Nowyj_Printer accept Nash_Nowyj_Printer lpsched # после реконфигурации надо вновь запустить lpsched
accept - позволяет ставить в очередь печать на этом принтере enable - разрешает печатать стоящие в очереди задания ключи команды lpadmin -pИмя_Нового_Принтера -vПОРТ_ПРИНТЕРА -iИНТЕРФЕЙСНАЯ_ПРОГРАММА - маршрутное имя программы, которая печатает -mМОДЕЛЬ_ПРОГРАММЫ - имя "модели" такой программы, лежащей в каталоге /usr/lib/lp/model -o nobanner - разрешить userу писать lp -o nobanner (рекомендую ампутировать banner в интерфейсном скрипте) -d printer - сделать принтером по умолчанию -?Удаленный_хост - можно подключать принтер удаленной машины -?Имя_принтера_на_удаленном_хосте (ключи не помню, посмотреть в man) -s host!printer - для Solaris - подключение удаленного принтера # перед этим вписать принтер в /etc/lp/Systems Вместе с системой накопления вывода на принтеры поставляются образцы интерфейсных программ. Они представляют собой shell-процедуры, перекодирующими печатаемый файл в формат соответствующего принтера.

Примеры

lpadmin -pstar1 -i/udd/print/inter -v/dev/xpit0 # локальный принтер lpadmin -pstar1 -mdumb -v/dev/lpt1 Подключить к системе удаленный принтер (ключи варьируются для разных версий Unix) HP-UX: lpadmin -pLJ_printer -?host -?printer Solaris: вписать удаленную машину в /etc/lp/Systems а затем lpadmin -pLJ_printer -s 'host!printer' ; accept LJ_printer lpadmin -dstar1 # Установить принтером по умолчани` lpadmin -xstar1 # Ликвидировать принтер star1

Файлы

/usr/lib/lp/model # Образцы интерфейсных программ (модели) /etc/lp # Каталог конфигурации системы LP /var/spool/lp/* # Каталоги с очередями man lpadmin # Естественно!