电脑技术学习

FreeBSD handbook中文版 11 打印 (3)使用打印机

dn001
目录

11.5;使用打印机
11.6;标准spooler;之外的选择

=============================================================

11.5;使用打印机
这一节将告诉你如何在FreeBSD;下使用打印机。这里有份使用者等级命令的概述。
lpr;
打印工作
lpq;
检查打印机队列
将工作从打印机队列中删除
lprm;
也有系统维护使用的命令,lpc,用来控制打印机及其队列。在管理打印机这一节里有
更详细的说明。
lpr,lprm;和lpq;这三个命令都接收-P;printer-name;这个指定在/etc/printcap;文件里设定
的打印机/队列的参数。允许你对不同的打印机做要求、删除,以及检查工作。如果你没有
使用-P;参数,那么这些命令将使用PRINTER;环境变量所指定的打印机。若你也没有
PRINTER;环境变量,那么这些命令则会对别名为lp;的打印机指定动作。
此后,默认打印机指的就是以PRINTER;环境变量设定的打印机或是当lp;环境变量不存
在时,别名为lp;的打印机。
11.5.1;打印工作
要打印文件,输入:;
%;lpr;filename;...;
这将把所有列出的文件以默认打印机打印。如果你没有指定任何文件,那么lpr;将会从
标准输入读入资料。下面这个例子将会打出一些重要的系统文件:;
%;lpr;/etc/host.conf;/etc/hosts.equiv;
若要指定以特定的打印机输出,输入:;
%;lpr;-P;printer-name;filename;...;
下面这个例子会将当前目录下的文件列表从名为rattan;打印机输出:;
%;ls;-l;|;lpr;-P;rattan;
因为lpr;命令之后没有指定任何一个文件,lpr;将会从标准输入读入资料以打印出来,即
由ls;-l;命令所产生的输出。
第61;页FreeBSD;使用手册
lpr;命令有许多参数如控制输出格式、套用文件转换、一次打印出多份,等等。请参看
打印参数这一节里有更详细的说明。
11.5.2;检查打印工作
当你使用lpr;打印时,一起送到LPD;spooling;系统的资料称为一个“打印工作”。每一
台打印机都有一个打印工作队列,而你的打印工作和其它的打印工作一样在队列里等待打
印。打印机会将先打印先送达的工作。
要显示默认打印机的队列,输入lpq;即可。若要指定打印机,请指定-P;参数。例如
%;lpq;-P;bamboo;
这个命令会显示叫做bamboo;的打印机队列。这里有一份lpq;命令的输出例子:;
bamboo;is;ready;and;printing;
Rank;Owner;Job;Files;Total;Size;
active;kelly;9;/etc/host.conf,;/etc/hosts.equiv;88;bytes;
2nd;kelly;10;(standard;input);1635;bytes;
3rd;mary;11;...;78519;bytes;
上面显示一共有三个工作在bamboo;的队列里。第一个工作由使用者kelly;送出,“工作
代码”为9。每一个工作都会有个唯一的工作代码。通常你可以忽略工作代码,但是如果你
要取消某个工作时,你就会需用知道工作号码。详情请参看删除队列这一节。
工作号码9;里包含了两个文件。用lpr;送多个文件将会被视为同一个工作。这是目前正
在处理的工作(注意“Rank”栏标示的active),即打印机现在应该就在打印这个工作。第二
个工作的资料是用lpr;从标准输入接收资料的。而第三个工作是由使用者mary;送出的。这
是一个较大的工作。而她要打印的文件因为太长而放不下,所以lpq;命令只显示三个点。
lpq;最前面的输出通常可以看出打印机现在在做什么(至少是LPD;觉得打印机现在应该是在
做什么)。
lpq;命令可以使用-l;参数以得到更详细的列表。这里有一个lpq;-l;的输出范例:;
waiting;for;bamboo;to;become;ready;(offline;?);
kelly:;1st;[job;009rose];
/etc/host.conf;73;bytes;
/etc/hosts.equiv;15;bytes;
第62;页FreeBSD;使用手册
kelly:;2nd;[job;010rose];
(standard;input);1635;bytes;
mary:;3rd;[job;011rose];
/home/orchid/mary/research/venus/alpha-regio/mapping;78519;bytes;
11.5.3;删除打印工作
如果你改变主意不想打印你的工作了,你可以用lprm;命令把他们从打印队列中删除。
通常你也可以用lprm;把一个正在处理的工作删除,不过可能还是会打印出部分或是全部的
文件。
要从默认打印机里删除工作,首先,用lpq;找出工作代码,然后输入:;
%;lprm;job-number;
如果要从指定的打印机删除工作,那么用-P;参数。下列的命令从打印机bamboo;的队
列中删除工作号码为10;的工作:;
%;lprm;-P;bamboo;10;
lprm;命令有一些常用的用法:;
lprm;-;
将(默认打印机)里所有属于你的工作都删除。
%;lprm;-P;rattan;-;
lprm;user;
将(默认打印机)里所有属于使用者user;的工作皆删除。只有超级使用者可以删除其
它人的工作,你只能删除你自己的工作。
lprm;
若不指定工作号码、使用者名称或是-;,lprm;将删除目前默认打印机正在处理的工
作,但前提是这个工作必需是属于你的。超级使用者可以删除任何目前正在处理的
工作。
若使用-P;参数配合上述的常用用法,则上述的动作将对指定的打印机动作而不是对默
认打印机。下列的命令将会删除目前使用者在打印机rattan;队列中的所有工作:;
注意:;如果你使用的是网络打印机,lprm;将只允许你从输出工作的机器删除该工作。
第63;页FreeBSD;使用手册
下面这些命令可以说明这个概念:;
%;lpr;-P;rattan;myfile;
%;rlogin;orchid;
%;lpq;-P;rattan;
Rank;Owner;Job;Files;Total;Size;
active;seeyan;12;...;49123;bytes;
2nd;kelly;13;myfile;12;bytes;
%;lprm;-P;rattan;13;
rose:;Permission;denied;
%;logout;
%;lprm;-P;rattan;13;
dfA013rose;dequeued;
cfA013rose;dequeued;
11.5.4;在纯文字之外:打印参数
lpr;命令提供控制格式输出、转换图形及其它文件格式、一次打出多份、工作处理方式
等参数。这一节将一一介绍。
11.5.4.1;格式输出与转换参数
下列的lpr;命令控制文件输出的格式。如果你的打印工作里没有纯文字或是你希望纯文
字通过lpr;处理后以特定的格式输出时,你可以使用这些参数。
举例来说,下面的命令从叫做bamboo;的打印机将DVI;文件(由TeX;排版系统产生);
fish-report.dvi;打出:;
%;lpr;-P;bamboo;-d;fish-report.dvi;
这些参数将套用这个工作里的每个文件,所以你不能把DVI;和ditroff;文件在同一个工
作里一起处理,而要分两次工作用不同的转换参数。
注意:;这些参数除了-p;和-T;需要为指定的打印机安装转换的过滤程序外,其它的都不
用。举例来说,参数-d;需要安装DVI;转换过滤程序。转换用的过滤程序这一节有较详细的
说明。
c;
第64;页d;
f;
g;
i;number;
l;
n;
p;
T;title;
t;
v;
下面是一个以默认打印机打印格式化过的ls;manual;page;的例子:;
zcat;命令将ls;原始数据解压缩并传送给troff;命令,将该数据格式化后以GNU;troff;格式
输出给lpr;送给LPD;spooler;处理。因为我们在使用lpr;命令时使用了-t;参数,所以spooler;
在打印时会把GNU;troff;转换成默认打印机所能了解的格式。
将输出缩进number;个字符。如果你省略number,则缩进8;个字符。这个
参数只有在某些转换用的过滤程序上有效。
原封不动的打出文字数据,包括控制字符。
打印ditroff;(device;independent;troff);数据。
在打印之前以pr;格式化输出。请参见pr;以取得更多的信息。
以title;取代pr;header;中的文件名。这个参数只有在配合-p;参数使用时才有
效。
打印troff;数据。
打印raster;数据。
%;zcat;/usr/share/man/man1/ls.1.gz;|;troff;-t;-man;|;lpr;-t;
打印cifplot;文件。
打印DVI;文件。
打印FORTRAN;文本文件
打印plot;数据。
注释:;请不要在-i;和数字之间加上空白
FreeBSD;使用手册
第65;页11.5.4.2;工作处理方式参数
#;copies;
m;
s;
r;
11.5.4.3;Header;Page;参数
这些参数就没有作用了。请参见Header;Pages;这一节以了解如何设定header;pages。
1.;C;text;
将同一工作里的每个文件都打出copies;份。系统管理员可以将这个参数关闭,以减
低打印机的障碍并鼓励使用复印机。请参见限制打印多份这一节的说明。
这个例子将会从默认的打印机打出三份parser.c,然后打出三份parser.h:;
%;lpr;-#3;parser.c;parser.h;
完成打印工作后,便通知使用者。若使用这个参数,当打印工作完成后,LPD;系统
将会写信给你。在这封信中将会告诉你你的工作是否成功地打出或是有错误以及
(通常会)告诉你错误的原因。
不要将要打印的文件拷贝到spooling;目录,而只要以symbolic;links;的方式取代。
如果你要打印大的文件,你可考虑用这个参数。这可以节省你spooling;目录的空间(否
则spooling;目录所在的文件系统可能会空间不足)。同时他也可以省下LPD;将文件
拷贝到spooling;目录所需的时间。
这么做有一个缺点就是当打印还没结束时,你不能修改或删除打印中的文件,因为
LPD;在打印时还会用到原始的文件。
Note:;如果你是用网络打印机打印,那么LPD;还是会把你的文件拷贝到远程的机器,;
所以参数-s;只有在本机上打印时才有用。
当你的文件已经拷贝到spooling;目录时,或是用-s;参数且打印完成时,就将原本的
文件删除。请小心使用这个参数!;
有一些参数是设定lpr;打印在header;pages;上的文字。如果打印header;pages;的话,那么
将header;page;上的机器名称以text;取代。机器名称通常是打印送出工作的机器名称。
2.;J;text;
FreeBSD;使用手册
下列的参数将会让lpr;告诉LPD;以特别的方式处理工作:;
第66;页FreeBSD;使用手册
将header;上的工作名称以text;取代。工作名称通常是一份打印工作里的第一个文件名
称,如果你是从标准输入打印数据的话,那么将会是stdin。
3.;h;
不要打印header;page。
注释:;在某些机器上,由于header;pages;产生的方式不同,;这个选项可能会无效。请参
见Header;Pages;这一节里更详细的说明。
11.5.5;管理打印机
作为打印机管理员,你必需安装、设定以及测试它们。你可以用lpc;这个命令:;
1.;让打印机开始工作或停止工作。
2.;开启或关闭他们的队列。
3.;重新安排队列里工作的顺序。
我们得先知道的一个概念是:如果一个打印机已经停止工作了,他将不会将队列里的任
何东西打出。使用者仍然可以将工作送过来,但是这些工作将会在队列里等待直到打印机开
始工作或是队列被清空了。
如果队列被关闭了,那么没有使用者(除了root;之外)可以将工作送给打印机。只有已
经开启队列的打印机可以接收其它人将工作送过来。一个打印机可以为一个已经关闭的队列
开始工作。在这个情况下,原本存在队列中的工作将会一一的被打印直到没有工作为止。
通常,拥有root;权限的使用者才可以用lpc;下命令。一般的使用者只能用lpc;命令来
查询打印机工作以及重新启动当掉的打印机。
以下是一份lpc;的命令列表。大部份的命令都需要指定printer-name;以指定要对哪一
台打印机下命令。printer-name;也可以用all;表示所有排在/etc/printcap;里的打印机。
abort;printer-name;
取消目前的工作,同时也停止打印机工作。如果队列被关闭,使用者仍然可以送工作给
打印机。
clean;printer-name;
将打印机spooling;目录中的旧文件删除。有时候LPD;可能没有把打印完的工作从
spooling;目录中删除,尤其是当打印的工作发生错误时或是有其它命令将其中止时。
第67;页FreeBSD;使用手册
这个命令将会找出这些不该存在于spooling;目录中的文件并将他们删除。
disable;printer-name;
关闭队列以停止接收新工作。如果打印机并未停止工作,那么队列中剩余的工作将会继
续打印直到队列中没有工作为止。关闭队列后,root;仍然可以继续送工作给打印机。
这个命令在你测试一台新打印机或是新的过滤程序时特别有用:你可以将队列关起来然
后以root;测试打印的工作。其它使用者则无法将工作送过来,除非你测试完毕后将队
列以enable;命令打开。
down;printer-name;message;
这个命令等于是disable;后再接着stop;命令。其中message;是当有使用者以lpq;检查
打印机队列或是以lpc;status;命令检查打印机状态时所显示的信息。
enable;printer-name;
将打印机队列打开。这样使用者就可以将工作送给打印机,但是只有在打印机已经开始
工作后,队列里的工作才会被打出来。
help;command-name;
将command-name;命令的说明打出。如果没有指定command-name,那么将会打出所有可
用的命令。
restart;printer-name;
重新启动打印机。如果因为某些情况使得LPD;当掉了,一般的使用者可以用这个命令让
打印机重新开始工作。但是他们无法用这个命令让由stop;或down;命令停止的打印机开
始工作。restart;命令等于abort;再接着start;命令。
start;printer-name;
让打印机开始工作。打印机会将队列里的工作打出。
stop;printer-name;
停止打印机工作。打印机将会先完成目前的工作然后停止打印队列中的任何工作。打印
机停止工作后,使用者仍然可以把工作送给一个未关闭的队列中。
topq;printer-name;job-or-username;
第68;页FreeBSD;使用手册
将打印机printer-name;队列中工作代号为job;或是属于使用者username;的工作移到队
列的最前面。在这个命令里,你不可以将all;填在printer-name;上指定所有的打印机。
up;printer-name;
这是和down;命令相对的指令。等于是start;后再接着enable;命令。
lpc;能以参数的方式接收上述的命令。如果你不输入任何命令,lpc;将会进入交谈模式,;
在这里你可以一直输入命令直到你以exit;命令、quit;命令或是输入文件结尾字符为止。
11.6;标准spooler;之外的选择
如果你读完了这份文件,现在你应该已经彻底了解FreeBSD;提供的LPD;spooling;系统。
不过你可能觉得这个系统有些缺点,因此你可能会想到:“除此之外还有哪些spooling;系统(可
以配合FreeBSD;使用)?”;
不幸的是,只有两种选择。它们分别是:;
LPRng;
LPRng;指的是“下一代的LPR”;。LPRng;是将PLP;完全重写。Patrick;Powell;和Justin;Mason;
(PLP;的主要负责人)一起合作LPRng。LPRng;的网站是ftp://dickory.sdsu.edu/pub/LPRng/。
PLP,;the;Portable;Line;Printer;Spooler;System;
PLP;是以由Patrick;Powell;所发展的软件为基础,现在由网络上的一群人共同维护发展。你
可以在(ftp://ftp.iona.ie/pub/plp/);这个网站取得这个软件。它和BSD;LPD;很相似,不过加
强了一些功能,包括:;
1.;更好的网络支持,包括内建一网络打印机支持、以NIS管理的printcaps以及用NFS;mount;
的spooling;目录。
2.;成熟的队列管理。允许多台打印机使用同一个队列、在队列之间传送工作或是将队列
重新传给其它打印机。
3.;远程控制打印机
4.;工作优先权设置
5.;较复杂的保密及访问设置

标签: