2 FreeBSD handbook中文版 11 打印 高级打印机设置 B.Header Pages( 九 )


在前几节(过滤程序的运作方式),我们曾提到LPD 会将记录文件名以参数的方式传给文字
第57 页FreeBSD 使用手册
过滤程序和转换用过滤程序 。如此过滤程序就知道可以将计算结果记录到哪个文件里 。这个
文件名在/etc/printcap 文件里是以af 关键词指定,如果不是以绝对路径来指定的话,那
么这个文件将会放在相对应于spooling 目录的位置下 。
LPD 会将纸张的宽度及高度传给lpf 命令(由pw 及pl 关键词所指定) 。lpf 使用这些参
数来计算将会用到多少张纸 。而将文件送给打印机打印后,它会将这些结果记录在记录文件
里 。这些结果看起来是像这个样子的:
2.00 rose:andy
3.00 rose:kelly
3.00 orchid:mary
5.00 orchid:mary
2.00 orchid:zhang
由于lpf 没有使用文件锁定的相关操作,因此每台打印机都要有独立的统计记录文件,
否则两个lpf 同时对同一个文件做写入的动作可能会使彼此的记录都不正确 。而最简单的解
决方式就是让不同的打印机在/etc/printcap 设置文件里以af=acct 关键词指定不同的统计
记录文件 。这些acct 文件将会分别放置在不同的spooling 目录下 。
当你准备要向使用者收钱时,执行pac 这个程序 。只要将目录切换到你想收钱的打印机
spooling 目录下,然后打pac 。你将会得到一份像下列的收费摘要:
Login pages/feet runs price
orchid:kelly 5.00 1 $ 0.10
orchid:mary 31.00 3 $ 0.62
orchid:zhang 9.00 1 $ 0.18
rose:andy 2.00 1 $ 0.04
rose:kelly 177.00 104 $ 3.54
rose:mary 87.00 32 $ 1.74
rose:root 26.00 12 $ 0.52
total 337.00 154 $ 6.74
pac 有下列参数可以使用:
1. Pprinter
指定要处理哪一台printer 的统计资料 。这个参数只有在/etc/printcap 文件里
第58 页FreeBSD 使用手册
的af 关键词是使用绝对路径时才有用 。
2. c
将输出的结果以费用排序,而不是以使用者的名字排序 。
3. m
忽略记录文件里的机器名称 。如果使用这个参数,那么alpha 机器上的使用者smith
和gamma 机器上的使用者smith 将会被视为同一个使用者 。否则,它们会被视为不
同的使用者 。
5. r
6. s
4. pprice
计算时以每一页收取price 元计算,而不是使用/etc/printcap 里的pc 所指定的
费率或2 分美金(默认的费率)计算 。你可以用浮点数来指定price 这个参数 。
颠倒排列的顺序 。
将计算的结果写到一个摘要文件里,同时清除统计记录文件的内容 。
name ...
只为指定的使用者names 做统计 。
在pac 默认的输出里,你可以看到不同机器上不同使用者所打印的张数 。如果你不在乎
使用者使用的机器(比如说使用者可以用任何机器),那么你可以用pac -m 产生下列的摘要
输出:
Login pages/feet runs price
andy 2.00 1 $ 0.04
kelly 182.00 105 $ 3.64
mary 118.00 35 $ 2.36
root 26.00 12 $ 0.52
zhang 9.00 1 $ 0.18
total 337.00 154 $ 6.74
pac 计算应缴纳的金额时,会使用/etc/printcap 文件里pc 关键词所指定的费率(默认
值为2 美分) 。即每一页或是每一英尺你想要收多少钱就是在这里指定 。你可以在执行pac
第59 页FreeBSD 使用手册
时以参数-p 改变这个费率 。不过-p 的单位是元,而不是分,举例来说,
# pac -p1.50
将使打印每一页以1 元5 分计算 。你可以用这个参数调整你所收取的费用 。
最后,如果你使用pac -s 将会把这些摘要信息存在一个文件里,这个文件的名称会和
统计记录文件相同,不过文件名后面会再加上_sum 。然后它会将统计记录文件清空 。如果你
再执行一次pac 命令,那么它会先读取之前统计的结果,然后再加上从统计记录文件里所计
算出来的结果 。

推荐阅读