如何使用 LP 打印命令添加打印机描述
- 在打印服务器上以超级用户 lp 或同等角色的身份登录。
- 添加打印机描述。
# lpadmin -p printer-name -D "comment"
- -p printer-name
指定要为其添加描述的打印机的名称。
- -D "comment"
指定打印机的特征,如位置或管理联系人。将 shell 可能解释的字符(如 *、?、\、!、^)用单引号引起来。
有关更多信息,请参见 lpadmin(1M) 手册页。
- 验证 Description 信息是否正确。
# lpstat -p printer-name -l
示例 6-1 添加打印机描述
以下示例说明如何为打印机 luna 添加打印机描述。
# lpadmin -p luna -D "Nathans office"
如何使用 LP 打印命令设置系统的缺省打印机目标
- 在要在其中设置缺省打印机的系统上以超级用户 lp 或同等角色的身份登录。
- 设置系统的缺省打印机。
# lpadmin -d [printer-name]
-d printer-name 指定要用作系统缺省打印机的打印机的名称。如果您不指定 printer-name,则系统将设置为没有缺省打印机。
- 检查系统的缺省打印机。
# lpstat -d
示例 6-2 设置系统的缺省打印机目标
以下示例说明如何将打印机 luna 设置为系统的缺省打印机。如果未设置 LPDEST 或 PRINTER 环境变量,则将打印机 luna 用作系统的缺省打印机。
# lpadmin -d luna
# lpstat -d
system default destination: luna
如何使用 LP 打印命令使标题页成为可选
- 在打印服务器上以超级用户 lp 或同等角色的身份登录。
- 使标题页成为可选。
# lpadmin -p printer-name -o banner=optional
- -p printer-name
指定要使其标题页成为可选的打印机的名称。
- -o banner=optional
使用户可以在提交打印请求时不指定标题页。
- 验证标题页是否可选。命令输出包含以下行:Banner not required。
# lpstat -p printer-name -l
示例 6-3 使标题页成为可选
以下示例说明如何在打印机 luna 上使标题页成为可选。
# lpadmin -p luna -o banner=optional
如何使用 LP 打印命令关闭标题页
- 在打印服务器上以超级用户 lp 或同等角色的身份登录。
- 关闭标题打印。
# lpadmin -p printer-name -o banner=never
- -p printer-name
指定要关闭其标题页的打印机的名称。
- -o banner=never
在所有情况下禁用标题页打印。
- 验证标题打印是否已关闭。
# lpstat -p printer-name -l
命令输出包含以下行:Banner not printed。
- 向打印机提交打印请求以确保不打印标题页。
示例 6-4 关闭标题页的打印
以下示例说明如何在打印机 luna 上禁用标题页的打印。
# lpadmin -p luna -o banner=never
使用 LP 打印命令设置打印机故障警报
如果选择此任务,则 LP 打印服务可以在检测到打印机故障时通知您。通过 lpadmin -A 命令或 Oracle Solaris Print Manager,可以选择以下任一方法来接收打印机故障通知:
向 root 登录的终端发送消息
向 root 发送电子邮件
不发送任何通知
但是,lpadmin -A 命令为您提供了接收所选程序指定的消息的其他选项。通过 lpadmin -A 命令,您还可以有选择地关闭已知错误的通知。
除非指定一个程序传送故障通知,否则故障警报的内容是预定义的消息,该消息指明打印机已停止打印并需要进行修理。
下表列出了可以使用 lpadmin -A 命令为打印机设置的警报值。也可以为打印轮、字体盒和表单设置这些警报值。
表 6-4 打印机故障警报值
| |
---|
'mail [username]' | 通过电子邮件将警报消息发送到打印服务器上的 root 或 lp,或者发送到指定的 username(它是用户的名称)。 | 'write [user-name]' | 将警报消息发送到打印服务器上的 root 或 lp 控制台窗口,或者发送到指定 username(它是用户的名称)的控制台窗口。指定的用户必须登录到打印服务器才能获取警报消息。 | 'command' | 运行每个警报的指定 command 文件。在执行该文件时,保存并恢复环境变量和当前目录。 | quiet | 在修复故障之前停止警报。当您、root 或指定用户收到重复警报时使用该值。 | none | 不发送任何警报。如果您不指定打印机的故障警报,则该值为缺省值。 |
|
如何使用 LP 打印命令为打印机设置故障警报
- 在打印服务器上以超级用户 lp 或同等角色的身份登录。
- 为打印机设置故障警报。
# lpadmin -p printer-name -A alert [-W minutes]
- -p printer-name
指定要为其指定打印机故障警报的打印机名称。
- -A alert
指定当打印机发生故障时会发出哪种警报。其中一些有效值包括 mail、write 和 quiet。
- -W minutes
指定出现故障警报的间隔时间(分钟)。如果不指定此选项,则发送警报一次。
- 验证是否已正确发送故障警报。
# lpstat -p printer-name -l
示例 6-6 设置打印机的故障警报
以下示例说明如何设置打印机 mars,以将故障警报通过电子邮件发送到名为 joe 的用户。每隔 5 分钟发送一次提醒。
# lpadmin -p mars -A 'mail joe' -W 5
以下示例说明如何设置打印机 venus,以将故障警报发送到控制台窗口。每隔 10 分钟发送一次提醒。
# lpadmin -p venus -A write -W 10
以下示例说明如何停止打印机 mercury 的故障警报。
# lpadmin -p mercury -A none
以下示例说明如何在修复打印机 venus 故障之前停止故障警报。
# lpadmin -p venus -A quiet
使用 LP 打印命令设置打印机故障恢复
如果您选择不发送任何故障通知,仍可以找出有关打印机故障的原因并更正问题。LP 打印服务不会继续使用有故障的打印机。除打印机故障警报外,您还可以在打印请求需要时,提供指示装载打印轮、字体盒和表单的警报。
您只能使用 lpadmin -F 命令来定义打印机的故障恢复选项。此任务在 Oracle Solaris Print Manager 中不可用。
打印机故障可能很简单,如纸张不足或者需要更换碳粉盒等。更严重的问题可能包括打印机整体故障或电源故障。
修复打印机故障后,在出现故障时处于活动状态的打印请求将采用以下三种方式之一开始打印:
从头开始打印
从打印停止时所在页的顶部继续打印
启用打印机后,从打印停止时所在页的顶部继续打印
LP 打印服务需要有单独的打印过滤器,才能从打印停止时所在页的顶部继续打印。此打印过滤器记录由缺省打印过滤器设置的控制序列。打印机使用这些控制序列跟踪页边界。如果使用指定的打印过滤器无法进行恢复,则 LP 打印服务将通知您。有关创建打印过滤器的信息,请参见如何创建新的打印过滤器。
如果您希望在修复打印机故障之后立即恢复打印,请通过使用 enable 命令启用打印机。
下表列出了可以使用 lpadmin -F 命令为打印机设置的故障恢复值。
表 6-5 打印机故障恢复值
| |
---|
beginning | 在故障恢复之后,从文件开头重新开始打印。 | continue | 在故障恢复之后,将从停止打印的页面的顶部开始进行打印。此恢复选项需要打印过滤器。 | wait | 在故障恢复之后,打印停止,直到您启用打印机。在通过使用 enable 命令启用打印机之后,从打印停止时所在页的顶部开始打印。此恢复选项需要打印过滤器。 |
|
如何使用 LP 打印命令设置打印机故障恢复
- 在打印服务器上以超级用户 lp 或同等角色的身份登录。
- 为打印机设置故障恢复。
# lpadmin -p printer-name -F recovery-options
- -p printer-name
指定要为其指定故障恢复的打印机的名称。
- -F recovery-options
指定以下三个有效恢复选项之一: beginning 、continue 或 wait。
有关更多信息,请参见 lpadmin(1M) 手册页。
- 验证是否正确设置了打印机故障恢复。
# lpstat -p printer-name -l
示例 6-7 设置打印机故障恢复
以下示例说明如何设置打印机 luna,以从打印停止时所在页的顶部继续打印。
# lpadmin -p luna -F continue
使用 LP 打印命令限制用户对打印机的访问
您可以控制哪些用户可以访问某些打印机或所有可用打印机。例如,您可以禁止一些用户在高品质打印机上打印,以便最大限度地减少开支。要限制用户对打印机的访问,可以通过在打印服务器上使用 lpadmin -u 命令创建 allow 和 deny 列表。通过 Oracle Solaris Print Manager 仅能创建 allow 列表。如果不创建上述任一列表,则打印机对所有可对其进行访问的用户均可用。
allow 列表包含允许访问指定打印机的用户的名称。deny 列表包含被拒绝访问指定打印机的用户的名称。
allow 和 deny 列表的规则在下表中进行了说明。
| |
---|
不创建 allow 和 deny 列表。或者,让两个列表留空。 | 所有用户均可以访问打印机。 | 在 allow 列表中指定 all。 | 所有用户均可以访问打印机。 | 在 deny 列表中指定 all | 拒绝服务器上除 root 和 lp 用户之外的所有用户访问打印机。 | 在 allow 列表中建立任何项。 | 忽略 deny 列表。仅有列出的用户才能访问打印机。 | 创建拒绝列表,但是不创建 allow 列表或者将 allow 列表保留为空。 | 拒绝 deny 列表中列出的用户访问打印机。 |
|
由于打印服务器负责控制对打印机的访问,因此只能在打印服务器上创建 allow 和 deny 列表。如果创建 allow 和 deny 列表,则打印服务器将以排它方式控制用户对打印机的访问。
下表列出了可以添加到 allow 列表或 deny 列表中以用于限制用户对打印机的访问的值。
表 6-6 允许列表和拒绝列表的值
| |
---|
user | 任何系统上的 User | all | 所有系统上的全部用户 | none | 不包括任何系统上的用户 | system!user | 仅 system 上的 User | !user | 仅本地系统上的 User | all!user | 任何系统上的 User | all!all | 所有系统上的全部用户 | system!all | system 上的所有用户 | !all | 本地系统上的所有用户 |
|
如何使用 LP 打印命令限制用户对打印机的访问
- 在打印服务器上以超级用户 lp 或同等角色的身份登录。
- 允许或拒绝用户访问打印机。
# lpadmin -p printer-name -u allow:user-list [deny:user-list]
- -p printer-name
指定对其应用 allow 或 deny 访问列表的打印机的名称。
- -u allow:user-list
指定要添加到 allow 访问列表的用户名。您可以使用此命令指定多个用户名。使用空格或逗号来分隔名称。如果使用空格,请用引号将名称列表引起来。
- -u deny:user-list
指定要添加到拒绝用户访问列表的用户名。您可以使用此命令指定多个用户名。使用空格或逗号来分隔名称。如果使用空格,请用引号将名称列表引起来。
指定的用户将会添加到打印服务器上以下某个文件中打印机的 allow 或 deny 列表中:
注 - 如果将 none 指定为 allow 列表中 user-list 的值,则在打印服务器上不会创建以下文件:
- 验证以下命令输出中 Users allowed 或 Users denied 标题下的信息是否正确:
# lpstat -p printer-name -l
示例 6-8 限制用户对打印机的访问
以下示例说明如何仅允许用户 nathan 和 george 访问打印机 luna。
# lpadmin -p luna -u allow:nathan,george
以下示例说明如何拒绝用户 nathan 和 george 访问打印机 asteroid。
# lpadmin -p asteroid -u deny:"nathan george"
LP 打印服务
本节介绍 LP 打印服务的目录结构、文件和日志。
LP 打印服务命令
下表列出经常使用的 LP 打印服务命令。
表 12-2 LP 打印服务命令
| | |
---|
enable | 激活打印机 | | cancel | 取消打印请求 | | lp | 将一个或多个文件发送到打印机 | | lpstat | 报告 LP 打印服务的状态 | | disable | 取消激活一台或多台打印机 | | accept | 允许打印请求为特定目标进行排队 | | reject | 阻止打印请求为特定目标进行排队 | | lpadmin | 设置或更改打印机配置 | | lpfilter | 设置或更改过滤器定义 | | lpforms | 设置或更改预先打印的表单 | | lpadmin | 挂载表单 | | lpmove | 将输出请求从一个目标移动到另一个目标 | | lpsched | 启动 LP 打印服务调度程序 | | lpshut | 停止 LP 打印服务调度程序 | | lpusers | 设置或更改用户可以请求的 LP 打印服务的缺省优先级和优先级限制 | |
|
有关已经过修改可用于 PAPI 的打印命令的信息,请参见PAPI 在 Oracle Solaris OS 中的实现方式。
LP 打印服务的功能
LP 打印服务可执行以下功能:
管理文件和调度本地打印请求
接收和调度网络请求
如有必要,过滤文件,以便正确打印它们
启动作为打印机接口的程序
跟踪打印作业的状态
跟踪打印机上挂载的表单
跟踪当前挂载的打印轮
传送要求挂载新表单或其他打印轮的警报
传送有关打印问题的警报
守护进程和 LP 内部文件
/usr/lib/lp 目录包含由 LP 打印服务使用的守护进程和文件,如下表所述。
表 12-3 /usr/lib/lp 目录的内容
| | |
---|
bin | 目录 | 包含用于生成打印警报、慢速过滤器和队列管理程序的文件。 | model | 目录 | 包含标准打印机接口程序。 | postscript | 目录 | 包含 LP 打印服务提供的所有 PostScript 过滤器程序。这些过滤器随 /etc/lp/fd 目录中的描述符文件一起提供。这些文件会通知 LP 打印服务过滤器的特征以及它们的位置。 |
|
LP 打印服务目录
LP 打印服务的文件分布在下表中显示的目录中。
表 12-4 LP 打印服务的目录
| |
---|
/usr/bin | LP 打印服务的用户命令。 | /etc/lp | LP 服务器配置文件的分层结构。 | /usr/share/lib | terminfo 数据库目录。 | /usr/lib/print | lp 转换脚本、in.lpd 守护进程和 printd 守护进程。printd 守护进程每分钟传输一次 /var/spool/print 目录中的所有暂挂作业。当没有要传输的剩余作业时,printd 守护进程将退出。 | /usr/sbin | LP 打印服务管理命令。 | /usr/lib/lp | lpsched 程序、二进制文件、PostScript 过滤器以及包含标准打印机接口程序的 model 目录。 | /var/lp/logs | LP 日志文件,如 lpsched.n(它包括来自 lpsched 的消息)和 requests.n(它包括有关已完成的打印请求的信息)。 | /var/spool/lp | 其中的文件排队等待打印的假脱机目录。 | /var/spool/print | LP 打印服务客户端请求的暂存区域。 | /etc/lp/model/uri | 用于处理 device-uri 信息的接口脚本的位置。 |
|
LP 打印服务配置文件
lpsched 守护进程在 /etc/lp 目录中存储配置信息,如下表所述。
 | 注意 - 此表中列出的配置文件是专用接口。这些文件在将来的发行版中可能会更改。您不应生成依赖于当前位置的这些文件或依赖于当前所用格式的数据的软件。 |
表 12-5 /etc/lp 目录的内容
| | |
---|
classes | 目录 | 标识 lpadmin -c 命令提供的类的文件。 | fd | 目录 | 现有过滤器的说明。 | filter.table | 文件 | 打印过滤器查找表。 | forms | 目录 | 用于放置每个表单的文件的位置。此目录最初为空。 | interfaces | 目录 | 打印机接口程序文件。 | logs | 到 /var/lp/logs 的链接 | 打印活动的日志文件。 | model | 到 /usr/lib/lp/model 的链接 | 标准打印机接口程序。 | printers | 目录 | 每台本地打印机的目录。每个目录都包含单台打印机的配置信息和警报文件。 | pwheels | 目录 | 打印轮文件或盒文件。 | ppd | 目录 | 使用 PPD 文件配置的每个本地队列都在此处放置了 PPD 文件的一个副本。 |
|
这些配置文件提供与基于 LPD 的打印服务器上的 /etc/printcap 文件类似的功能。
注 - 您可以检查配置文件的内容,但是不应直接编辑这些文件,而应改用 lpadmin 命令进行配置更改。更改将写入 /etc/lp 目录中的配置文件。lpsched 守护进程可管理和更新配置文件。
/etc/lp/printers 目录包含系统可识别的每个本地打印机的子目录。以下示例显示了打印机 sparc1 和 luna 的 /etc/lp/printers 子目录。
$ ls -l /etc/lp/printers
drwxrwxr-x 2 lp lp 512 Jan 23 23:53 luna
drwxrwxr-x 2 lp lp 512 Jan 11 17:50 sparc1
下表介绍了每个打印机特定的目录内的文件。
| |
---|
alert.sh | 在响应警报时要执行的 Shell | alert.vars | 警报变量 | configuration | 配置文件 | users.deny | 拒绝其访问打印机的用户的列表 | comment | 打印机描述 |
|
打印机 luna 的配置文件 /etc/lp/printers/luna/configuration 通常如下所示:
Banner: on: Always
Content types: PS
Device: /dev/term/b
Interface: /usr/lib/lp/model/standard
Printer type: PS
Modules: default
terminfo 数据库
/usr/share/lib 目录包含 terminfo 数据库目录。此目录包含许多类型的终端和打印机的定义。LP 打印服务使用 terminfo 数据库中的信息执行以下任务:
初始化打印机
建立选定的页面大小、字符间距、行间距和字符集
将代码序列传送到打印机
每台打印机在 terminfo 数据库中使用短名称标识。如有必要,可以向 terminfo 数据库中添加一些项,但是这样做很单调乏味且很耗时。有关更多信息,请参见为不支持的打印机添加 terminfo 项。
terminfo 数据库中的打印机名称
有关每种打印机类型的信息存储在 terminfo 数据库 (/usr/share/lib/terminfo) 中。此信息包括打印机功能和初始化控制数据。您安装的打印机必须对应于 terminfo 数据库中的项。
$ pwd
/usr/share/lib/terminfo
$ ls
1 3 5 7 9 B H P a c e g i k m o q s u w y
2 4 6 8 A G M S b d f h j l n p r t v x z
$
每个子目录都包含终端或打印机的已编译数据库项。这些项按打印机或终端类型的第一个字母进行组织。例如,如果具有 Epson 打印机,则在 /usr/share/lib/terminfo/e 目录中查找,以找出特定型号的 Epson 打印机。
$ cd /usr/share/lib/terminfo/e
$ ls
emots ep2500+high ep48 ergo4000 exidy2500
env230 ep2500+low epson2500 esprit
envision230 ep40 epson2500-80 ethernet
ep2500+basic ep4000 epson2500-hi ex3000
ep2500+color ep4080 epson2500-hi80 exidy
$
Epson 打印机的项以 epson 开头。
如果具有 NEC 打印机,则在 /usr/share/lib/terminfo/n 目录中查找 NEC 打印机型号。
$ cd /usr/share/lib/terminfo/n
$ ls
ncr7900 ncr7900iv netronics network nuc
ncr7900-na ncr7901 netty netx nucterm
ncr7900i nec netty-Tabs newhp
ncr7900i-na net netty-vi newhpkeyboard
$
此目录中的 nec 项用于 NEC 打印机。
打印机必需的 terminfo 项
以下三个表列出打印机必需的 terminfo 项。
表 12-6 打印机的必需 terminfo 项(布尔值)
| | |
---|
布尔值: | | | | cpix | 更改字符间距会更改分辨率 | | daisy | 打印机需要一个用于更改字符集的运算符 | | lpix | 更改行间距会更改分辨率 |
|
表 12-7 打印机的必需 terminfo 项(数字)
| | |
---|
数字: | | | | bufsx | 打印之前缓冲的字节数 | | cols | 一行中的列数 | | cps | 平均打印速度(字符/秒) | | it | 将制表符初始设置为 n 个空格 | | lines | 每页的行数 | | orc | 水平分辨率,以字符为单位 | | orhi | 水平分辨率,以英寸为单位 | | orl | 垂直分辨率,以行为单位 | | orvi | 垂直分辨率,以英寸为单位 |
|
表 12-8 打印机的必需 terminfo 项(字符串)
| | |
---|
字符串: | | | | chr | 更改水平分辨率 | | cpi | 更改每英寸字符数 | | cr | 回车 | | csnm | 字符集名称列表 | | cudl | 回车下移一行 | | cud | 回车下移 n 行 | | cuf | 回车右移 n 列 | | cvr | 更改垂直分辨率 | | ff | 弹出页面 | | hpa | 水平绝对位置 | | ht | 按 Tab 键跳至下一个 8 空格制表位 | | if | 初始化文件名 | | iprog | 初始化程序的路径名 | | is1 | 打印机初始化字符串 | | is2 | 打印机初始化字符串 | | is3 | 打印机初始化字符串 | | lpi | 更改每英寸行数 | | mgc | 清除所有页边距(上、下和左右) | | rep | 将一个字符重复 n 次 | | rwidm | 禁用倍宽打印 | | scs | 选择字符集 | | scsd | 开始定义字符集 | | slines | 将页长设置为每页 n 行 | | smgl | 设置当前列的左页边距 | | smglp | 设置左页边距 | | smgr | 设置当前列的右页边距 | | smgrp | 设置右页边距 | | smglr | 同时设置左页边距和右页边距 | | msgt | 设置当前行的上页边距 | | smgtp | 设置上页边距 | | smgb | 设置当前行的下页边距 | | smgbp | 设置下页边距 | | smgtb | 同时设置上页边距和下页边距 | | swidm | 启用倍宽打印 | | vpa | 将垂直位置设置为绝对位置 |
|
LP 打印服务日志文件
LP 打印服务维护下表中介绍的两组日志文件。
| |
---|
syslogd | 将 /etc/syslog.conf 中的 lpr.debug 设置为启用 LP 打印服务日志记录 | /var/spool/lp | 排在打印队列中的当前请求的列表 | /var/lp/logs/requests | 打印请求的进展历史记录 |
|
打印队列日志
每个系统的调度程序都将打印请求日志保留在 /var/spool/lp/tmp/system 和 /var/spool/lp/requests/system 目录中。每个打印请求都有两个文件,用于包含有关请求的信息,每个目录中各有一个文件。只有超级用户或 lp 才能访问 /var/spool/lp/requests/system 目录中的信息。只有已提交请求的用户、超级用户或 lp 才能访问 /var/spool/lp/tmp/system 目录中的信息。
以下示例显示了 /var/spool/lp/tmp/starbug 目录的内容:
$ ls /var/spool/lp/tmp/starbug
5 5-0
# cat 5-0
C 1
D print1
F /etc/profile
P 20
T /etc/profile
t simple
U root
s 0000
v 2
只要打印请求排在队列中,这些文件就仅保留在其目录中。完成打印请求后,将对文件中的信息进行合并,并附加到 /var/lp/logs/requests 文件。此文件将在下一节中介绍。
如果需要跟踪当前队列中打印请求的状态,请使用 /var/spool/lp/logs 目录中的信息。
历史记录日志文件
LP 打印服务在以下两个日志文件中记录打印服务的历史记录:lpsched 和 requests。这些日志文件位于 /var/lp/logs 目录中。您可以使用这些日志文件中的信息诊断和排除打印故障。以下是 /var/lp/logs 目录内容的一个示例:
# cd /var/lp/logs
# ls
lpsched.1 requests requests.2
lpsched lpsched.2 requests.1
#
以下是用于排除故障的两个最重要的日志文件:
requests 日志文件具有简单的结构,以便您可以使用常见的 UNIX shell 命令提取数据。请求将按其打印的顺序列出。另外,请求由显示其请求 ID 的行分隔。分隔行(以 = 开头的行)下方的每行标记有单个字母,以标识该行中所包含信息的种类。每个字母由单个空格与数据分隔开。
以下示例显示了 requests 日志文件的内容:
# pwd
/var/lp/logs
# tail requests.2
= print1-3, uid 0, gid 1, size 206662, Wed Mar 14 08:56:30 MST 2003
z print1
C 1
D print1
F /usr/dict/words
P 20
T /usr/dict/words
t simple
U root
s 0x0014
v 2
#
下表显示了 requests 日志文件中的字母代码及其对应行的内容。
表 12-9 requests 日志文件中的代码
| |
---|
= | 分隔行,该行包含以下各项: 请求 ID、用户 ID (user ID, UID) 和用户组 ID (group ID, GID)、原始(未过滤的)文件大小的总字节数以及将请求排队的时间。 | z | 打印机的名称。 | C | 打印的份数。 | D | 打印机或类的目标,或者 any 一词。 | F | 已打印文件的名称。对每个已打印的文件,重复该行。文件按所显示的顺序打印。 | f | (可选的)所用表单的名称。 | H | (可选的)以下三种特殊处理类型之一: 恢复、暂挂和立即。 | N | (可选的)在成功完成打印请求时使用的警报类型。如果通过电子邮件通知用户,则类型用字母 M 表示;如果通过将消息发送到终端来通知用户,则类型用字母 W 表示。 | O | (可选的)与打印机有关的 -o 选项。例如 nobanner。 | P | 打印请求的优先级。 | p | 已打印页的列表。 | r | (可选的)当用户使用 lp -r 命令请求对文件进行“原始”处理时包括的单个字母行。 | S | (可选的)所用的字符集、打印轮或打印盒。 | T | 放置在标题页上的标题。 | t | 在文件中找到的内容类型。 | U | 提交打印请求的用户的名称。 | s | 请求的结果,显示为以十六进制格式表示的单个位的组合。多个位由打印服务在内部使用。下表介绍了各个位及其含义。 | v | | x | (可选的)用于打印请求的慢速过滤器。 | Y | (可选的)用于打印请求的打印过滤器的特殊模式列表。 | z | (可选的)用于请求的打印机。如果已为任何打印机或打印机类请求排队,或者请求已移动到其他目标,则该打印机与目标(D 行)不同。 |
|
下表显示了 LP requests 日志文件中的结果代码及其说明。
表 12-10 requests 日志文件中的结果代码
| |
---|
0x0001 | 请求处于暂挂状态,直到进行恢复。 | 0x0002 | 慢速过滤正在运行。 | 0x0004 | 慢速过滤已成功完成。 | 0x0008 | 请求位于打印机上。 | 0x0010 | 已成功完成打印。 | 0x0020 | 请求处于暂挂状态,直到用户进行更改。 | 0x0040 | 请求已取消。 | 0x0080 | 接下来将打印请求。 | 0x0100 | 请求无法过滤或打印。 | 0x0200 | 请求正在传输到远程打印机(过时)。 | 0x0400 | 用户将接到通知。 | 0x0800 | 通知正在运行。 | 0x1000 | 远程系统已接受请求(过时) | 0x2000 | 管理员暂挂了请求。 | 0x4000 | 打印机必须更改过滤器。 | 0x8000 | 请求暂时停止。 |
|
假脱机目录
排队打印的文件在打印之前存储在 /var/spool/lp 目录中,这可能仅需几秒。下表显示了 /var/spool/lp 目录的内容。
表 12-11 /var/spool/lp 目录的内容
| | |
---|
SCHEDLOCK | 文件 | 调度程序的锁定文件。如果调度程序终止且不会重新启动,请检查此文件。 | admins | 目录 | 到 /etc/lp 的链接。 | bin | 目录 | 到 /usr/lib/lp/bin 的链接。 | logs | 链接 | 到 ../lp/logs(在其中记录已完成的打印请求)的链接。 | model | 链接 | 到 /usr/lib/lp/model 的链接。 | requests | 目录 | 包含每台已配置打印机的子目录的目录,其中记录了尚未打印的打印请求。用户无法访问此日志。 | system | 目录 | 系统的打印状态文件。 | temp | 链接 | 到 /var/spool/lp/tmp/hostname(包含已假脱机的请求)的链接。 | tmp | 目录 | 每台已配置打印机的目录,其中记录了尚未打印的打印请求。对现有打印请求进行的更改也记录在此目录中。 |
|
过滤打印文件
打印过滤器是打印服务器上的程序,用于将已排队文件的内容从一种格式转换为另一种格式。
打印过滤器可以很简单,也可以很复杂,具体视需要而定。Oracle Solaris OS 在 /usr/lib/lp/postscript 目录中提供了打印过滤器,这些过滤器涵盖了目标打印机要求数据为 PostScript 格式的大多数情况。如果您需要用于非 PostScript 打印机的过滤器,则必须创建这些过滤器并将其添加到需要过滤器的系统。
/etc/lp/fd 目录中提供了一组打印过滤器描述符文件。这些描述符文件描述了过滤器的特征(例如,快速过滤器或慢速过滤器)。这些描述文件指向过滤器程序(例如,指向 /usr/lib/lp/postscript/postdaisy)。
打印机接口程序的工作原理
LP 打印服务与 Oracle Solaris OS 的其他部件进行交互。打印服务使用标准打印机接口程序执行以下操作:
LP 打印服务使用在 /usr/lib/lp/model 目录中找到的标准接口程序,除非您指定了其他程序。您可以创建定制接口程序。但是,必须确保定制程序不会终止与打印机的连接或干扰正常的打印机初始化。
CUPS understands many different types of files directly, including text, PostScript, PDF, and image files. This allows you to print from inside your applications or at the command-line, whichever is most convenient! Type either of the following commands to print a file to the default (or only) printer on the system:
lp filename
lpr filename
Many systems will have more than one printer available to the user. These printers can be attached to the local system via a parallel, serial, or USB port, or available over the network. Use the lpstat(1) command to see a list of available printers:
lpstat -p -d
The -p
option specifies that you want to see a list of printers, and the -d
option reports the current default printer or class.
Use the -d
option with the lp command to print to a specific printer:
lp -d printer filename
or the -P
option with the lpr command:
lpr -P printer filename
If you normally use a particular printer, you can tell CUPS to use it by default using the lpoptions(1) command:
lpoptions -d printer
Both the lp and lpr commands have options for printing more than one copy of a file:
lp -n num-copies filename
lpr -#num-copies filename
Copies are normally not collated for you. Use the -o collate=true
option to get collated copies:
lp -n num-copies -o collate=true filename
lpr -#num-copies -o collate=true filename
The cancel(1) and lprm(1) commands cancel a print job:
cancel job-id
lprm job-id
The job-id is the number that was reported to you by the lp command. You can also get the job ID using the lpq(1) or lpstat commands:
lpq
lpstat
The following options apply when printing all types of files.
The -o media=xyz
option sets the media size, type, and/or source:
lp -o media=Letter filename
lp -o media=Letter,MultiPurpose filename
lpr -o media=Letter,Transparency filename
lpr -o media=Letter,MultiPurpose,Transparency filename
The available media sizes, types, and sources depend on the printer, but most support the following options (case is not significant):
Letter
- US Letter (8.5x11 inches, or 216x279mm)Legal
- US Legal (8.5x14 inches, or 216x356mm)A4
- ISO A4 (8.27x11.69 inches, or 210x297mm)COM10
- US #10 Envelope (9.5x4.125 inches, or 241x105mm)DL
- ISO DL Envelope (8.66x4.33 inches, or 220x110mm)Transparency
- Transparency media type or sourceUpper
- Upper paper trayLower
- Lower paper trayMultiPurpose
- Multi-purpose paper trayLargeCapacity
- Large capacity paper tray
The actual options supported are defined in the printer's PPD file in the PageSize
, InputSlot
, and MediaType
options. You can list them using the lpoptions(1) command:
lpoptions -p printer -l
When Custom
is listed for the PageSize
option, you can specify custom media sizes using one of the following forms:
lp -o media=Custom.WIDTHxLENGTH filename
lp -o media=Custom.WIDTHxLENGTHin filename
lp -o media=Custom.WIDTHxLENGTHcm filename
lp -o media=Custom.WIDTHxLENGTHmm filename
where "WIDTH" and "LENGTH" are the width and length of the media in points, inches, centimeters, or millimeters, respectively.
The -o landscape
option will rotate the page 90 degrees to print in landscape orientation:
lp -o landscape filename
lpr -o landscape filename
The -o orientation-requested=N
option rotates the page depending on the value of N:
-o orientation-requested=3
- portrait orientation (no rotation)-o orientation-requested=4
- landscape orientation (90 degrees)-o orientation-requested=5
- reverse landscape or seascape orientation (270 degrees)-o orientation-requested=6
- reverse portrait or upside-down orientation (180 degrees)
The -o sides=two-sided-short-edge
and -o sides=two-sided-long-edge
options will enable two-sided printing on the printer if the printer supports it. The -o sides=two-sided-short-edge
option is suitable for landscape pages, while the -o sides=two-sided-long-edge
option is suitable for portrait pages:
lp -o sides=two-sided-short-edge filename
lp -o sides=two-sided-long-edge filename
lpr -o sides=two-sided-long-edge filename
The default is to print single-sided:
lp -o sides=one-sided filename
lpr -o sides=one-sided filename
The -o job-sheets=start,end
option sets the banner page(s) to use for a job:
lp -o job-sheets=none filename
lp -o job-sheets=standard filename
lpr -o job-sheets=classified,classified filename
If only one banner file is specified, it will be printed before the files in the job. If a second banner file is specified, it is printed after the files in the job.
The available banner pages depend on the local system configuration; CUPS includes the following banner files:
none
- Do not produce a banner page.classified
- A banner page with a "classified" label at the top and bottom.confidential
- A banner page with a "confidential" label at the top and bottom.secret
- A banner page with a "secret" label at the top and bottom.standard
- A banner page with no label at the top and bottom.topsecret
- A banner page with a "top secret" label at the top and bottom.unclassified
- A banner page with an "unclassified" label at the top and bottom.