Печатать, конечно, можно и так: cat file > /dev/lp. Но в многопользовательской системе такой фокус не всегда пройдет. Поэтому печатаемый файл ставят в очередь на печать.
Имеем принтер. У принтера есть ИМЯ_ПРИНТЕРА. ПОРТ_ПРИНТЕРА - специальный файл в который надо выталкивать данные для печати. ИНТЕРФЕЙСНАЯ_ПРОГРАММА - программа, которая как раз и будет этим заниматься.
Если у нас нормально сконфигурирована система печати, то печататься
можно так:
lp -d имя_принтера file
или, если мы хотим напечатать на "default" принтере
cat file | lp
lpstat Посмотреть в каком состоянии очередь печати
cancel [идентификатор_запроса ...] [принтер ...]
Срубить запрос на печать
lp просто складывает файл в SPOOL КАТАЛОГ. ДЕМОН ПЕЧАТИ lpshed обнаруживает вновь поступивший файл, ставит его в очередь на печать, и, когда очередь доходит, запускает наконец ИНТЕРФЕЙСНУЮ ПРОГРАММУ, вход которой берется из печатаемого файла, а ее вывод перенаправляется на ПОРТ_ПРИНТЕРА.
Подключить к системе новый принтер.
lpadmin -p LJ_printer -i /usr/bin/lj_print -v /dev/lpt2
или
lpadmin -p Nash_Nowyj_Printer -m standard -v /dev/contty
enable Nash_Nowyj_Printer
accept Nash_Nowyj_Printer
Вместе с системой накопления вывода на принтеры поставляются образцы интерфейсных программ. Они представляют собой shell-процедуры, обеспечивающие связь между планировщиком lpshed и устройствами. Образцы хранятся в каталоге /usr/lib/lp/model и доступны lpadmin с опцией -m
Примеры:
lpadmin -pstar1 -cstars -estar -v/dev/xpit0
lpadmin -pstar1 -cstars -i/udd/print/inter -v/dev/xpit0
lpadmin -pstar1 -cstars -mdumb -v/dev/xpit0
lpadmin -xstar1 #Ликвидировать принтер star1
/usr/lib/lp/interface #Каталог интерфейсных программ
/usr/lib/lp/model #Образцы интерфейсных программ