1. 关于在 Oracle Solaris 操作系统中进行打印的简介
4. 使用 Oracle Solaris 打印管理器设置和管理打印机(任务)
12. 在 Oracle Solaris 操作系统中打印(参考)
Oracle Solaris 打印管理器中的打印机驱动程序字段的说明
PAPI 在 Oracle Solaris OS 中的实现方式
本节介绍 LP 打印服务的目录结构、文件和日志。
注 - LP 打印服务客户机命令已经过修改,可以使用 FSG OpenPrinting 开放标准打印 API (Print API, PAPI)。这些打印命令位于 PAPI 的上面一层。有关更多信息,请参见PAPI 在 Oracle Solaris OS 中的实现方式。
下表列出经常使用的 LP 打印服务命令。
表 12-2 LP 打印服务命令
|
有关已经过修改可用于 PAPI 的打印命令的信息,请参见PAPI 在 Oracle Solaris OS 中的实现方式。
LP 打印服务可执行以下功能:
管理文件和调度本地打印请求
接收和调度网络请求
如有必要,过滤文件,以便正确打印它们
启动作为打印机接口的程序
跟踪打印作业的状态
跟踪打印机上挂载的表单
跟踪当前挂载的打印轮
传送要求挂载新表单或其他打印轮的警报
传送有关打印问题的警报
/usr/lib/lp 目录包含由 LP 打印服务使用的守护进程和文件,如下表所述。
表 12-3 /usr/lib/lp 目录的内容
|
表 12-4 LP 打印服务的目录
|
lpsched 守护进程在 /etc/lp 目录中存储配置信息,如下表所述。
表 12-5 /etc/lp 目录的内容
|
这些配置文件提供与基于 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
下表介绍了每个打印机特定的目录内的文件。
|
打印机 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
/usr/share/lib 目录包含 terminfo 数据库目录。此目录包含许多类型的终端和打印机的定义。LP 打印服务使用 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 项。
表 12-6 打印机的必需 terminfo 项(布尔值)
|
表 12-7 打印机的必需 terminfo 项(数字)
|
表 12-8 打印机的必需 terminfo 项(字符串)
|
|
每个系统的调度程序都将打印请求日志保留在 /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 #
以下是用于排除故障的两个最重要的日志文件:
lpsched 日志文件-包含有关本地打印请求的信息。
requests 日志文件-包含有关已完成且已不在打印队列中的打印请求的信息。
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 日志文件中的代码
|
下表显示了 LP requests 日志文件中的结果代码及其说明。
表 12-10 requests 日志文件中的结果代码
|
排队打印的文件在打印之前存储在 /var/spool/lp 目录中,这可能仅需几秒。下表显示了 /var/spool/lp 目录的内容。
表 12-11 /var/spool/lp 目录的内容
|
打印过滤器是打印服务器上的程序,用于将已排队文件的内容从一种格式转换为另一种格式。
打印过滤器可以很简单,也可以很复杂,具体视需要而定。Oracle Solaris OS 在 /usr/lib/lp/postscript 目录中提供了打印过滤器,这些过滤器涵盖了目标打印机要求数据为 PostScript 格式的大多数情况。如果您需要用于非 PostScript 打印机的过滤器,则必须创建这些过滤器并将其添加到需要过滤器的系统。
/etc/lp/fd 目录中提供了一组打印过滤器描述符文件。这些描述符文件描述了过滤器的特征(例如,快速过滤器或慢速过滤器)。这些描述文件指向过滤器程序(例如,指向 /usr/lib/lp/postscript/postdaisy)。
LP 打印服务与 Oracle Solaris OS 的其他部件进行交互。打印服务使用标准打印机接口程序执行以下操作:
初始化打印机端口(如有必要)。标准打印机接口程序使用 stty 命令初始化打印机端口。
初始化打印机。标准打印机接口程序使用 terminfo 数据库和 TERM shell 变量查找相应的控制序列。
打印标题页(如有必要)。
按打印请求指定的份数正确地打印。
LP 打印服务使用在 /usr/lib/lp/model 目录中找到的标准接口程序,除非您指定了其他程序。您可以创建定制接口程序。但是,必须确保定制程序不会终止与打印机的连接或干扰正常的打印机初始化。