1. 关于在 Oracle Solaris 操作系统中进行打印的简介
4. 使用 Oracle Solaris 打印管理器设置和管理打印机(任务)
12. 在 Oracle Solaris 操作系统中打印(参考)
13. Oracle Solaris OS 中的打印问题故障排除(任务)
本节包含有关以下主题的逐步说明:
如何解决无输出问题
如何解决错误输出问题
如何取消挂起 lp 命令
如何解决空闲(挂起)打印机问题
如何解决冲突的状态消息
此任务包括以下过程,用于在向打印机提交打印请求而未打印任何内容时尝试进行故障排除:
检查硬件(如何检查打印机硬件)。
检查网络(如何检查打印机网络连接)。
检查 LP 打印服务基本功能(如何检查 LP 打印服务的基本功能)。
检查从打印客户机到打印服务器的打印(如何检查从打印客户机到打印服务器的打印)。
在转到打印客户机/服务器一节之前,请先按所列顺序尝试前三个步骤。但是,如果打印标题页而不打印其他内容,请转到如何解决错误输出问题下的说明。
请参阅制造商文档。如果打印机连接至串行端口,请验证电缆是否支持硬件流量控制。空调制解调器适配器支持此控制。下表显示用于空调制解调器电缆的管脚配置。
|
请参见打印机文档以了解正确设置。
如果打印机有自检功能,请使用该功能。检查打印机文档,以了解有关打印机自检的信息。
如果计算机和打印机的波特设置不同,有时候会不打印任何内容,但更多情况下会获得错误输出。有关说明,请参见如何解决错误输出问题。
print-client# ping print-server print-server is alive print-server# ping print-client print-client not available
如果消息指出系统仍处于活动状态,则可以访问系统,因此网络正常。该消息还说明,命名服务或本地 /etc/hosts 文件已将您输入的主机(系统)名称转换为 IP 地址;否则,您需要输入 IP 地址。
如果获得 not available 消息,请尝试回答以下问题: 在您的网站中如何设置 NIS 或 NIS+?是否需要采取其他步骤以使打印服务器和打印客户机能够相互通信?如果您的网站未运行 NIS,那么您是否已在每个打印客户机的 /etc/hosts 文件中输入了打印服务器的 IP 地址,并且已在打印服务器的 /etc/hosts 文件中输入了所有打印客户机的 IP 地址?
角色包含授权和具有特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的"配置 RBAC(任务列表)"。
# echo "lpr.debug /var/tmp/lpr.debug" >>/etc/syslog.conf
注 - lpr.debug 与 /var/tmp/lpr.debug 之间的空白必须是制表符。
# touch /var/tmp/lpr.debug
# svcadm restart system.log
以下过程以打印机 luna 为例来检查基本的 LP 打印服务功能。
使用 lpstat 命令。
% lpstat -r scheduler is running
显示一条消息,指示 LP 调度程序正在运行。
使用 svcs 命令。
% svcs application/print/server
如果调度程序正在运行,则显示以下输出。
STATE STIME FMRI online Oct_24 svc:/application/print/server:default
如果未运行调度程序,则显示以下输出。
STATE STIME FMRI disabled 14:27:48 svc:/application/print/server:default
使用 lpsched 命令。
# /usr/lib/lpsched Print services started.
显示一条消息,指示未启动打印服务。
使用 svcadm 命令。
# svcadm enable application/print/server
使用 svcadm 命令时,不显示指示是否已启动打印服务的消息。要确定打印服务是否联机,请再次运行 svcs application/print/server 命令。
如果在启动该调度程序时遇到问题,请参见如何取消挂起 LP 打印服务。
# lpstat -t scheduler is running system default destination: luna device for luna: /dev/term/a
该消息 device for printer-name 可显示端口地址。电缆是否连接至 LP 打印服务所连接的端口?如果端口正确,请跳转到步骤 5。
# chown lp device-filename
此命令将指定特殊用户 lp 作为设备文件的属主。在此命令中,device-filename 是设备文件的名称。
# chmod 600 device-filename
此命令仅允许超级用户 lp 或同等角色访问打印机端口设备文件。
# lpstat -p luna -l printer luna is idle. enabled since Jan 12 14:24 2004. available Content types: postscript Printer types: PS
以上示例说明了一台已正确配置并可用于处理打印请求的 PostScript 打印机。如果打印机类型和文件内容类型正确,请跳转到步骤 6。
# lpadmin -p printer-name -T printer-type -I file-content-type
注 - 很容易错误地将打印机设置为登录终端,因此即使在您认为不适用的情况下,也要检查这种可能性。
# ps -ef root 169 167 0 Apr 04 ? 0:08 /usr/lib/saf/listen tcp root 939 1 0 19:30:47 ? 0:02 /usr/lib/lpsched root 859 858 0 19:18:54 term/a 0:01 /bin/sh -c \ /etc/lp /interfaces/luna luna-294 rocket!smith “passwd\n## #
在此命令的输出中,查找打印机端口项。在以上示例中,端口 /dev/term/a 错误地设置为登录终端。可以通过行尾的 "passwd\n## 信息进行判断。如果端口设置正确,请跳过此过程中最后的步骤。
# cancel request-id
在此命令中,request-id 是要取消的打印请求的请求 ID 号。
# lpadmin -p printer-name -h
如果在基本 LP 打印服务功能中找不到打印问题的根源,请继续进行以下针对所适用的特定客户机/服务器情况的过程之一。
有关检查基本功能的说明,请参见如何检查 LP 打印服务的基本功能。在从打印客户机发出请求但未打印任何内容时,请在尝试找出原因之前确保打印机可在本地正常运行。
在打印客户机中,必须启用打印机并接受请求,才能打印来自客户机的任何请求。
注 - 对于下面的大多数步骤,您必须作为 root 用户或 lp 登录。
# lpstat -t luna scheduler is running system default destination: luna device for luna: /dev/term/a luna accepting requests since Jan 12 14:26 2004 printer luna now printing luna-314. enabled since Jan 12 14:26 2004. available. luna-129 root 488 Jan 12 14:32 #
以上示例说明了打开并且正在运行的打印服务器。
不正确的打印机类型可能会导致不正确的输出。例如,如果指定打印机类型为 PS 并且页面以相反顺序打印,请尝试类型为 PSR 的打印机。(这些类型名称必须大写。)而且,错误的打印机类型还可能导致文本丢失、文本模糊不清或者文本字体错误。要确定打印机类型,请检查 terminfo 数据库中的项。有关 terminfo 数据库结构的信息,请参见打印机类型。
$ lpstat -p luna -l printer luna is idle. enabled since Thu Jul 12 15:02:32 ... Form mounted: Content types: postscript Printer types: PS Description: Connection: direct Interface: /usr/lib/lp/model/standard After fault: continue Users allowed: (all) Forms allowed: (none) Banner not required Character sets: Default pitch: Default page size: 80 wide 66 long Default port settings: $
# lpstat -p printer-name -T printer-type
在打印客户机上,打印机类型应为 unknown。在打印服务器上,打印机类型必须与定义的 terminfo 项相匹配,以支持您的打印机型号。如果没有用于您的打印机类型的 terminfo 项,请参见如何为不支持的打印机添加 terminfo 项。
为打印机指定的文件内容类型指示了打印机可以直接打印而不必进行过滤的文件的类型。错误的文件内容类型会导致在需要过滤时跳过过滤。
在打印客户机中,除非有理由指定一个或多个明确的内容类型,否则文件内容类型应为 any。如果在客户机中指定内容,则在打印客户机中而不是打印服务器上进行过滤。此外,客户机中的内容类型必须与打印服务器中指定的内容类型相匹配,依此类推,打印服务器还必须反映打印机的功能。
用于表示这些文件类型的名称不必与制造商使用的名称相匹配。但是,使用的名称必须与 LP 打印服务可识别的过滤器使用的名称一致。
# lpadmin -p printer-name -I file-content-type(s)
根据需要,可以在打印客户机或打印服务器上分别运行此命令,也可以同时在两者上运行此命令。在打印客户机中尝试 -I any,而在打印服务器上尝试 -I ""。后者指定一个空的文件内容类型列表,这意味着将尝试过滤所有文件,因为打印机只能直接打印精确匹配其打印机类型的文件。
不能打印文件时,应优先考虑此组合。如果可行,您可能需要尝试在打印服务器上指定明确的内容类型,以减少不必要的过滤。对于本地 PostScript 打印机,如果打印机支持这些类型,则应使用 postscript 或 postscript,simple。请注意,PS 和 PSR 不是文件内容类型,它们是打印机类型。
如果省略 -I,则文件内容列表缺省为 simple。如果使用 -I 选项并且要指定 simple 以外的文件内容类型,则列表中必须包括 simple。
指定多个文件内容类型时,请用逗号分隔名称。也可以用空格分隔名称,并用引号将列表引起来。如果指定 any 作为文件内容类型,则不进行任何过滤,并应仅发送打印机可以直接打印的文件类型至打印机。
如果用户使用 lp -T PS 命令将打印请求提交到 PostScript 打印机,则不会执行过滤。请尝试用 lp -T postscript 命令提交请求以强制进行过滤,这样可以下载文档所需的非驻留字体。
注 - 如果打印机连接至并行或 USB 端口,则与波特设置无关。
# stty -a < /dev/term/a speed 9600 baud; rows = 0; columns = 0; ypixels = 0; xpixels = 0; eucw 1:0:0:0, scrw 1:0:0:0 intr = ^c; quit = ^|; erase = ^?; kill = ^u; eof = ^d; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^q; stop = ^s; susp = ^z; dsusp = ^y; rprnt = ^r; flush = ^o; werase = ^w; lnext = ^v; parenb -parodd cs7 -cstopb -hupcl cread -clocal -loblk -parext -ignbrk brkint -ignpar -parmrk -inpck istrip -inlcr -igncr icrnl -iuclc ixon -ixany -ixoff imaxbel isig icanon -xcase echo echoe echok -echonl -noflsh -tostop echoctl -echoprt echoke -defecho -flusho -pendin iexten opost -olcuc onlcr -ocrnl -onocr -onlret -ofill -ofdel tab3 #
此命令可以显示打印机端口的 stty 当前设置。
下表说明了 LP 打印服务的标准打印机接口程序使用的缺省 stty 选项。
|
# lpadmin -p printer-name -o "stty= options"
|
通过将选项列表用单引号引起并用空格分隔每个选项,可以更改多个选项设置。例如,假设打印机要求您启用奇数奇偶校验并设置 7 位的字符大小。您可键入与以下示例所示类似的命令:
# lpadmin -p neptune -o "stty='parenb parodd cs7'"
stty 选项 parenb 启用奇偶校验检查/生成,parodd 设置奇数奇偶校验生成,cs7 将字符大小设置为 7 位。
# lp -d printer-name filename
# svcadm disable /application/print/server
# svcadm enable /application/print/server
LP 打印服务应重新启动。如果在重新启动调度程序时出现问题,请参见如何重新启动打印调度程序。
此任务包括许多在打印机不应该空闲却处于空闲状态时要使用的过程。按顺序执行这些过程很有用,但不强制遵从该顺序。
# lpstat -p printer-name
显示的信息表明打印机处于空闲还是活动状态、已启用还是已禁用、可用还是不接受打印请求。如果一切正常,请继续本节中的其他过程。如果无法运行 lpstat 命令,请参见如何取消挂起 LP 打印服务。
# accept printer-name
打印机开始接受请求进入其打印队列。
# enable printer-name
此命令可以重新启用打印机,以使其可以处理队列中的请求。
使用 lpstat -o 命令检查打印过滤。
$ lpstat -o luna luna-10 fred 1261 Mar 12 17:34 being filtered luna-11 iggy 1261 Mar 12 17:36 on terra luna-12 jack 1261 Mar 12 17:39 on terra $
确定是否正在过滤第一个等待请求。如果输出与以上示例类似,则正在过滤文件;该打印机并未挂起,只是需要一些时间来处理请求。
根据打印机故障警报的指定方法,消息可能直接通过电子邮件发送给 root 用户,也可能写入 root 用户登录的终端。
# enable printer-name
如果打印机故障阻止了请求,此命令将强制重试。如果此命令不起作用,请继续本节中的其他过程。
# reject printer-name
print-client# ping print-server print-server is alive
如果收到消息 print-server not available,则表示可能存在网络问题。
# accept printer-name
# enable printer-name
# reject printer-name
# more /var/lp/logs/lpsched
在无法打印从打印客户机到打印服务器的打印请求时,显示的信息可能有助于查明造成问题的原因。
# accept printer-name
# enable printer-name