目录
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. 较复杂的保密及访问设置
- 实测Windows Vista Home繁体中文版
- 中文版Vista升级待遇不同
- Vista今起全面铺货 中文版最低售价2000元
- 微软Vista今全球上市 新系统中文版1530元
- 图 Vista中文版进驻中关村 跟踪拍摄
- 实地跟踪拍摄:Vista中文版进驻中关村
- Windows Vista到货 中文版价格曝光
- 图 Vista中文版进驻中关村 实地跟踪拍摄
- Windows Vista 简体中文版最终价格公布
- Vista中文版傻瓜教程:IE7.0快捷秘笈
