LP 打印服务的结构
第7 章• LP打印服务(参考) 165
文件名说明
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 数据库结构的说明,请参
见第45 页中的“打印机类型”。如有必要,您可以将各项添加到terminfo 数据库,但是此
操作枯燥并且耗时。有关更多信息,请参见第143 页中的“为不支持的打印机添加
terminfo 项”。
守护进程和LP 内部文件
/usr/lib/lp 目录包含LP 打印服务所用的守护进程和文件,如下表所述。
LP 打印服务的结构
166 系统管理指南:高级管理• 2006 年7 月
表7–3 /usr/lib/lp 目录的内容
文件类型说明
bin 目录包含用于生成打印警报、慢速过滤器和队列管理
程序的文件。
model 目录包含标准打印机接口程序。
postscript 目录包含LP 打印服务提供的所有PostScript 过滤器程
序。这些过滤器随/etc/lp/fd 目录中的描述符文
件一起提供。这些文件会通知LP 打印服务过滤
器的特征以及它们的位置。
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 目录中。每个打印请求都有两个文件,用于包含有关请求
的信息,每个目录中各有一个文件。/var/spool/lp/requests/system 目录中的信息仅能由
超级用户或lpr 访问。/var/spool/lp/tmp/system 目录中的信息仅能由提交请求的用户、超
级用户或lp 访问。
以下示例显示了/var/spool/lp/tmp/starbug 目录的内容:
$ ls /var/spool/lp/tmp/starbug
5 5-0
# cat 5-0
C 1
D print1
LP 打印服务的结构
第7 章• LP打印服务(参考) 167
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.1requests requests.2
lpsched lpsched.2 requests.1
#
以下是用于排除故障的两个最重要的日志文件:
lpsched 日志文件-包含有关本地打印请求的信息。
requests 日志文件-包含有关已完成且已不在打印队列中的打印请求的信息。
requests 日志文件具有简单的结构,以便您可以使用常见的UNIX shell 命令提取数据。请
求将按其打印的顺序列出。另外,请求由显示其请求ID 的行分隔。分隔行(以= 开头的
行)下方的每行标记有单个字母,以标识该行中所包含信息的种类。每个字母由单个空格
与数据分隔开。
以下示例显示了requests 日志文件的内容:
LP 打印服务的结构
168 系统管理指南:高级管理• 2006 年7 月
# 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 日志文件中的字母代码及其对应行的内容。
表7–4 requests 日志文件中的代码
字母行的内容
= 分隔行,该行包含以下各项:请求ID、用户ID (user ID, UID) 和用户组ID
(group ID, GID)、原始(未过滤的)文件大小的总字节数以及将请求排队的时
间。
z 打印机的名称。
C 打印的份数。
D 打印机或打印机类的目标,或者any 一词。
F 已打印文件的名称。对每个已打印的文件,重复该行。文件按所显示的顺序打
印。
f (可选)所用表单的名称。
LP 打印服务的结构
第7 章• LP打印服务(参考) 169
表7–4 requests 日志文件中的代码(续)
字母行的内容
H (可选)以下三种特殊处理类型之一:恢复、暂挂和立即。
N (可选)在成功完成打印请求时使用的警报类型。如果通过电子邮件通知用
户,则类型用字母M 表示;如果通过将消息发送到终端来通知用户,则类型用
字母W 表示。
O (可选)与打印机有关的-o 选项。例如nobanner。
P 打印请求的优先级。
p 已打印页的列表。
r (可选)当用户使用lp -r 命令请求对文件进行“原始”处理时包括的单个字母
行。
S (可选)所用的字符集、打印轮或打印盒。
T 放置在标题页上的标题。
t 在文件中找到的内容类型。
U 提交打印请求的用户的名称。
s 请求的结果,显示为以十六进制格式表示的单个位的组合。多个位由打印服务
在内部使用。下表介绍了各个位及其含义。
v 0-标识打印作业源自in.1pd 打印守护进程或网络上的其他系统。
2-标识打印作业源自/usr/bin/lp 或/usr/ucb/lpr 命令。
1-标识打印作业源自打印软件的较旧版本。
x (可选)用于打印请求的慢速过滤器。
Y (可选)用于打印请求的打印过滤器的特殊模式列表。
z (可选)用于请求的打印机。如果已为任何打印机或打印机类将请求排队,或
者请求已移动到其他目标,则该打印机与目标(D 行)不同。
下表显示了LP requests 日志文件中的结果代码及其说明。
表7–5 requests 日志文件中的结果代码
结果代码说明
0x0001 请求处于暂挂状态,直到进行恢复。
0x0002 慢速过滤正在运行。
0x0004 慢速过滤已成功完成。
0x0008 请求位于打印机上。
LP 打印服务的结构
170 系统管理指南:高级管理• 2006 年7 月
表7–5 requests 日志文件中的结果代码(续)
结果代码说明
0x0010 已成功完成打印。
0x0020 请求处于暂挂状态,直到用户进行更改。
0x0040 请求已取消。
0x0080 接下来将打印请求。
0x0100 请求无法过滤或打印。
0x0200 请求正在传输到远程打印机(过时)。
0x0400 用户将接到通知。
0x0800 通知正在运行。
0x1000 远程系统已接受请求(过时)
0x2000 管理员暂挂了请求。
0x4000 打印机必须更改过滤器。
0x8000 请求暂时停止。
假脱机目录
排队等待打印的文件在打印之前存储在/var/spool/lp 目录中,可能仅存储几秒钟。下表显
示了/var/spool/lp 目录的内容。
表7–6 /var/spool/lp 目录的内容
文件类型说明
SCHEDLOCK 文件调度程序的锁定文件。如果调度程序终止且不会重新
启动,请检查此文件。
admins 目录链接到/etc/lp。
bin 目录链接到/usr/lib/lp/bin。
logs 链接链接到../lp/logs(在其中记录已完成的打印请
求)。
model 链接链接到/usr/lib/lp/model。
requests 目录包含每台已配置打印机的子目录的目录,其中记录了
尚未打印的打印请求。用户无法访问此日志。
system 目录系统的打印状态文件。
LP 打印服务的结构
第7 章• LP打印服务(参考) 171
表7–6 /var/spool/lp 目录的内容(续)
文件类型说明
temp 链接链接到/var/spool/lp/tmp/hostname(包含已假脱机
的请求)。
tmp 目录每台已配置打印机的目录,其中记录了尚未打印的打
印请求。对现有打印请求进行的更改也记录在此目录
中。
LP 打印服务命令
下表列出经常使用的LP 打印服务命令。您必须是超级用户lp 或承担等效角色才能使用1M
命令。
表7–7 LP打印服务命令的快速参考
命令任务手册页
enable 激活打印机enable(1)
cancel 取消打印请求cancel(1)
lp 将一个或多个文件发送到打印机lp(1)
lpstat 报告LP 打印服务的状态lpstat(1)
disable 取消激活一台或多台打印机enable(1)
accept 允许打印请求为特定目标进行排
队
accept(1M)
reject 阻止打印请求为特定目标进行排
队
accept(1M)
lpadmin 设置或更改打印机配置lpadmin(1M)
lpfilter 设置或更改过滤器定义lpfilter(1M)
lpforms 设置或更改预先打印的表单lpforms(1M)
lpadmin 挂载表单lpadmin(1M)
lpmove 将输出请求从一个目标移动到另
一个目标
lpmove(1M)
lpsched 启动LP 打印服务调度程序lpsched(1M)
lpshut 停止LP 打印服务调度程序lpshut(1M)
LP 打印服务命令
172 系统管理指南:高级管理• 2006 年7 月
表7–7 LP打印服务命令的快速参考(续)
命令任务手册页
lpusers 设置或更改用户可以请求的LP
打印服务的缺省优先级和优先级
限制
lpusers(1M)
LP 打印服务的功能
LP 打印服务可执行以下功能:
管理文件和调度本地打印请求
接收和调度网络请求
如有必要,过滤文件,以便正确打印它们
启动作为打印机接口的程序
跟踪打印作业的状态
跟踪打印机上挂载的表单
跟踪当前挂载的打印轮
传送要求挂载新表单或其他打印轮的警报
传送有关打印问题的警报
LP 如何管理文件和调度本地打印请求
LP 打印服务有一个名为lpsched 的调度程序守护进程。该调度程序守护进程使用有关打印
机设置和配置的信息更新LP 系统文件。
lpsched 守护进程调度打印服务器上的所有本地打印请求,如下图所示。用户可以从应用程
序或从命令行发出请求。此外,调度程序还会跟踪打印服务器上打印机和过滤器的状态。
打印机完成请求后,调度程序会调度打印服务器上排在队列中的下一个请求(如果存在下
一个请求)。
LP 如何管理文件和调度本地打印请求
第7 章• LP打印服务(参考) 173
图7–1 lpsched 守护进程调度本地打印请求
在不重新引导系统的情况下,您就可以使用svcadm disable application/print/server 命
令停止调度程序。然后,使用svcadm enable application/print/server 命令重新启动调度
程序。每个系统的调度程序会管理通过lp 命令向系统发出的请求。
调度网络打印请求
每台打印客户机都直接通过网络与打印服务器进行通信。通信是在发出请求的命令(如
lp、lpstat、cancel、lpr、lpq 或lprm)和打印服务器上的打印服务之间进行的。此通信
减少了仅作为客户机的系统上的打印系统开销,从而提高了可伸缩性、性能和数据准确
性。
打印服务器通过Internet 服务守护进程( inetd) 侦听打印请求。侦听到网络中对打印服务的
请求时, inetd 守护进程会启动名为协议适配器( in.lpd) 的程序。协议适配器可转换打印
请求,并将其传送到打印假脱机程序,然后将结果返回给请求者。此协议适配器按需启
动,并在为网络请求提供服务后退出。此过程为打印消除了空闲系统开销。此过程还消除
了为支持网络打印进行的任何其他系统配置,而在早期版本的Solaris 打印软件中则需要这
些配置。
调度网络打印请求
174 系统管理指南:高级管理• 2006 年7 月
过滤打印文件
打印过滤器是打印服务器上的程序,用于将已排队文件的内容从一种格式转换为另一种格
式。
根据需要,打印过滤器可以是简单的或复杂的。Solaris OS 在/usr/lib/lp/postscript 目录
中提供了打印过滤器,这些过滤器涵盖了目标打印机要求数据为PostScript 格式的大多数情
况。如果您需要用于非PostScript 打印机的过滤器,则必须创建这些过滤器并将其添加到需
要过滤器的系统。
在/etc/lp/fd 目录中提供了一组打印过滤器描述符文件。这些描述符文件描述了过滤器的
特征(例如,快速过滤器或慢速过滤器)。这些描述文件指向过滤器程序(例如,指向
/usr/lib/lp/postscript/postdaisy)。
打印机接口程序的作用
LP 打印服务与Solaris OS 的其他部件进行交互。打印服务使用标准打印机接口程序执行以下
操作:
初始化打印机端口(如有必要)。标准打印机接口程序使用stty 命令初始化打印机端
口。
初始化打印机。标准打印机接口程序使用terminfo 数据库和TERM shell 变量查找相应的
控制序列。
打印标题页(如有必要)。
按打印请求指定的份数正确地打印。
除非指定其他程序,否则LP 打印服务会使用/usr/lib/lp/model 目录中的标准接口程序。
您可以创建自定义接口程序。但是,必须确保自定义程序不会终止与打印机的连接或干扰
正常的打印机初始化。
lpsched 守护进程如何跟踪打印请求的状态
lpsched 守护进程会保存它处理的每个打印请求的日志文件,并记录打印过程中出现的任何
错误。此日志文件保存在/var/lp/logs/lpsched 文件中。每天晚上,lp cron 作业都会将
/var/lp/logs/lpsched 文件重命名为新的lpsched.n 文件并启动新的日志文件。如果出现错
误或者作业从打印队列中消失,则可以使用日志文件确定lpsched 守护进程对打印作业执行
的操作。
lpsched 守护进程如何跟踪打印请求的状态
第7 章• LP打印服务(参考) 175
清除日志文件
在附加信息时,/var/lp/logs 目录中的lpsched 和requests 日志文件将增大。LP 打印服务
使用缺省的cron 作业清除日志文件。lp cron 作业位于/var/spool/cron/crontabs/lp 文件
中。cron 作业会定期移动日志文件的内容。log 的内容移动到log.1,而log.1 的内容则移动到
log.2。当覆写log.2 时,log.2 的内容将丢失(即,替换为log.1 的以前的内容)。
如何更改打印机请求日志轮转的频率
打印机服务器上的requests 日志文件每周轮转一次,而不是每天轮转一次。如果打印机服
务器繁忙,则可以将轮转间隔更改回每天一次。
成为超级用户或lp,或者承担打印服务器上的等效角色。
设置EDITOR 环境变量。
# EDITOR=vi
# export EDITOR
编辑lp crontab 文件。
# crontab -e lp
将每周日轮转requests 日志文件的文件的第一行(0) 更改为星号(*),以便每天轮转一次:
1 3 3 * ** cd /var/lp/logs; if [ -f requests ]; then if
[ -f requests.1]; then /bin/mv requests.1requests.2; fi; /usr/bin/cp
requests requests.1; >requests; fi
保存文件并退出。
本地打印的工作原理
打印请求会沿用客户机和服务器为单独系统时的路径。请求始终沿用相同的路径从客户机
流向服务器。
下图说明了用户提交请求以在本地打印机(它是连接到用户系统的打印机)上打印
PostScript 文件时所发生的情况。本地系统上的lpsched 守护进程会进行所有的处理。此处
理可能包括以下内容:
将打印机和内容类型匹配
确定缺省打印机、过滤请求
启动指定的打印机接口程序
打印机接口程序可执行以下操作:
1
2
3
4
5
清除日志文件
176 系统管理指南:高级管理• 2006 年7 月
打印标题页。
捕捉打印机故障。
确定打印机故障策略以重置、继续或重新开始打印作业。
最后,接口程序会使用lpcat 程序将打印请求下载到本地打印机的串行端口。
清除日志文件
第7 章• LP打印服务(参考) 177
图7–2本地打印过程
清除日志文件
178 系统管理指南:高级管理• 2006 年7 月
远程打印的工作原理
下图说明了Solaris 打印客户机上的用户将打印请求提交到基于lpd 的打印服务器时发生的情
况。该命令会打开一个连接,并直接处理它自己与打印服务器的通信。
图7–3 在Solaris 打印客户机和基于lpd 的打印服务器之间进行打印
下图显示了将打印请求提交到Solaris 打印服务器的基于lpd 的打印客户机。lpd 守护进程可
处理打印请求的本地部分和与打印服务器的连接。在打印服务器上,inetd 进程会等待网络
打印请求,并启动协议适配器为该请求提供服务。协议适配器与lpsched 守护进程(处理打
印服务器上的请求)进行通信。
清除日志文件
第7 章• LP打印服务(参考) 179
图7–4 在基于lpd 的打印客户机和Solaris 打印服务器之间进行打印
下图说明了Solaris 打印客户机上的用户将打印请求提交到Solaris 打印服务器时发生的情
况。打印客户机上的打印命令通过直接与打印服务器进行通信来处理每个打印请求的本地
部分。
打印服务器上的inetd 进程可监视网络打印请求并启动协议适配器,以便与打印服务器上处
理打印请求的lpsched 守护进程进行通信。
清除日志文件
180 系统管理指南:高级管理• 2006 年7 月
图7–5 在Solaris 打印客户机和Solaris 打印服务器之间进行打印
清除日志文件
第7 章• LP打印服务(参考) 181
182
管理终端和调制解调器(概述)
本章提供管理终端和调制解调器的概述信息。以下是本章中概述信息的列表:
第183 页中的“管理终端和调制解调器方面的新增功能”
第184 页中的“终端、调制解调器、端口和服务”
第186 页中的“终端和调制解调器的管理工具”
第186 页中的“串行端口工具”
第186 页中的“服务访问工具”
有关如何使用串行端口工具设置终端和调制解调器的逐步说明,请参见第9 章。
有关如何使用服务访问工具(Service Access Facility, SAF) 设置终端和调制解调器的逐步说
明,请参见第10 章。
管理终端和调制解调器方面的新增功能
本节描述Solaris 发行版中管理终端和调制解调器方面的新增或更改的功能。有关Solaris 新
增功能的完整列表和对Solaris 发行版的描述,请参见《Solaris 10 What’s New》。
系统控制台上由SMF 管理的ttymon 调用
Solaris 10: 系统控制台上的ttymon 调用由SMF 管理。通过将属性添加到
svc:/system/console-login:default 服务,可以使用svccfg 命令指定ttymon 命令参数。请
注意,这些属性特定于ttymon,不是通用的SMF 属性。
注– 您无法再在/etc/inittab 文件中定义ttymon 调用。
有关如何使用SMF 指定ttymon 命令参数的逐步说明,请参见第201 页中的“如何设置
ttymon 控制台终端类型”。
8第8 章
183
有关SMF 的完整概述,请参见《System Administration Guide: Basic Administration》中的第
14 章,“Managing Services (Overview)”。有关与SMF 关联的逐步过程的信息,请参
见《System Administration Guide: Basic Administration》中的第15 章,“Managing Services
(Tasks)”。
终端、调制解调器、端口和服务
终端和调制解调器提供对系统和网络资源的本地和远程访问。设置终端和调制解调器访问
是系统管理员的重要职责。本节解释Solaris 操作系统中调制解调器和终端管理所涉及的一
些概念。
终端描述
系统的位映射图形显示器与字母数字终端并不相同。字母数字终端连接到串行端口,并仅
显示文本。您不必执行任何特殊步骤以管理图形显示器。
调制解调器描述
可以将调制解调器设置为三种基本配置:
拨出
拨入
双向
连接到家庭计算机的调制解调器可能设置为提供拨出服务。通过拨出服务,您可以从自己
的家里访问其他计算机。但是,任何人都无法从外部访问您的计算机。
拨入服务正好相反。通过拨入服务,用户可以从远程站点访问系统。但是,它不允许对外
进行呼叫。
顾名思义,双向访问同时提供拨入和拨出功能。
端口描述
端口是设备与操作系统进行通信的通道。从硬件的角度来看,端口是终端或调制解调器电
缆可能以物理方式连入的“容器”。
然而,严格来讲,端口并不是物理容器,而是具有硬件(管脚和连接器)和软件(设备驱
动程序)组件的实体。单个物理容器通常提供多个端口,允许连接两个或多个设备。
常见的端口类型包括:串行端口、并行端口、小型计算机系统接口(Small Computer Systems
Interface, SCSI) 端口和以太网端口。
串行端口使用标准的通信协议,通过一条线路逐位传输一个字节的信息。
终端、调制解调器、端口和服务
184 系统管理指南:高级管理• 2006 年7 月
按照RS-232-C 或RS-423 标准设计的设备包括大多数调制解调器、字母数字终端、绘图仪和
一些打印机。可以使用标准电缆将这些设备互换连接到具有类似设计的计算机的串行端
口。
当必须将许多串行端口设备连接到单台计算机时,您可能需要为系统添加适配器板。适配
器板及其驱动程序软件可提供额外串行端口,以连接更多设备。
服务描述
调制解调器和终端使用串行端口软件来访问计算资源。必须设置串行端口软件,以便为连
接到端口的设备提供特定的“服务”。例如,您可以设置串行端口来为调制解调器提供双
向服务。
端口监视器
访问服务的主要机制是通过端口监视器。端口监视器是持续监视对打印机或文件的登录和
访问请求的程序。
当端口监视器检测到请求时,它将设置在操作系统和请求服务的设备之间建立通信所需的
任何参数。然后,端口监视器将控制转移到提供所需服务的其他进程。
下表描述了Solaris 操作系统中包括的两种类型的端口监视器。
表8–1端口监视器类型
手册页端口监视器说明
listen(1M) listen 控制对网络资源的访问,如在Solaris 2.6 以
前的发行版中处理远程打印请求。缺省的
Solaris 操作系统不再使用此端口监视器类
型。
ttymon(1M) ttymon 提供对调制解调器和字母数字终端所需的登
录服务的访问。串行端口工具自动设置
ttymon 端口监视器,以处理来自这些设备的
登录请求。
您可能熟悉较早的端口监视器getty。新增的ttymon 端口监视器功能更加强大。单个
ttymon 端口监视器可以取代多个getty 实例。在其他方面,这两个程序具有相同的功能。
有关更多信息,请参见getty(1M) 手册页。