本章介绍如何解决设置和维护打印服务时可能遇到的打印问题。
下面列出了本章中的信息:
有关打印的概述信息,请参见第 1 章。
有时,设置打印机时,可能需要查找打印机的设备标识信息。有关更多信息,请参见查找有关并行的和 USB 连接的打印设备的信息。
有关并行的和 USB 连接的打印机的信息可在 /dev/printers 目录中找到。
要查询打印机的 IEEE1284 设备标识信息,请键入:
# /usr/lib/lp/bin/printer-info -a /dev/printers/* |
例如:
# /usr/lib/lp/bin/printer-info -a /dev/printers/* /dev/printers/0: Manufacturer: Hewlett-Packard Model: hp color LaserJet 4650 Description: Hewlett-Packard color LaserJet 4650 Class: PRINTER Command set: cmd[0]: PJL cmd[1]: MLC cmd[2]: BIDI-ECP cmd[3]: PCLXL cmd[4]: PCL cmd[5]: PDF cmd[6]: PJL cmd[7]: MIME cmd[8]: POSTSCRIPT |
请注意,使用 Solaris Print Manager 添加设备时,会在 Add Attached Printer 对话框中使用同一程序检测和提供有关打印机生产商和型号的信息。有关更多信息,请参见 printmgr(1M)。
有时在设置打印机后,您会发现不能打印任何内容。或者,可能打印过程中超出限制: 打印了一些内容,但这并不是您所期望的,输出不正确或模糊不清。
然后,在解决这些问题后,还可能出现其他问题,例如:
lp 命令挂起
打印机进入空闲状态
用户获得冲突消息
尽管本章中的许多建议都与并行打印机相关,但这些建议也适用于更常见的串行打印机。
不打印任何内容时,通常有三个方面需要检查:
打印机硬件
网络
LP 打印服务
如果有标题页,但没有其他任何内容,则是错误输出的特殊情况。请参见错误输出疑难解答。
硬件是需要检查的第一个方面。很明显,应确保打印机已插电并已打开。此外,还应参阅制造商文档以了解有关硬件设置的信息。有些计算机使用可更改打印机端口特性的硬件交换机。
打印机硬件包括打印机、将打印机连接至计算机的电缆以及电缆各端插入的端口。一般方法是从打印机开始一直检查到计算机。检查打印机。检查电缆与打印机连接的位置。检查电缆。检查电缆与计算机连接的位置。
此类问题在从打印客户机向打印服务器发出远程打印请求时更为常见。应确保已启用打印服务器与打印客户机之间的网络访问。
如果网络运行的是网络信息服务扩充版本 (Network Information Service Plus, NIS+),请参见《System Administration Guide: Naming and Directory Services (NIS+)》,了解启用系统之间访问的说明。如果网络运行的不是 NIS 或 NIS+,则在设置打印服务器和打印客户机之前,请在打印服务器上的 /etc/hosts 文件中包含 Internet 地址和每个客户机系统的系统名称。此外,还必须将打印服务器的 IP 地址和系统名称包含到每个打印客户机系统的 /etc/hosts 文件中。
为使打印正常进行,必须在打印服务器上运行 LP 调度程序。如果未运行,您需要使用以下命令启动该调度程序:
# svcadm enable application/print/server |
除了运行调度程序之外,打印机还必须已启用并接受请求,然后才能生成输出。如果 LP 打印服务不接受对打印机的请求,则将拒绝已提交的打印请求。通常在此情况下,用户会在提交打印请求后收到一条警告消息。如果没有为打印机启用 LP 打印服务,打印请求将在系统中继续排队,直到启用打印机为止。
通常,应该按如下步骤分析打印问题:
逐步执行打印请求的路径。
检查 LP 打印服务在每个步骤中的状态。
配置是否正确?
打印机是否接受请求?
是否已启用打印机来处理请求?
如果请求在传输时挂起,请在 syslog.conf 中设置 lpr.debug 以显示数据流。请参见调试打印问题。
如果请求在本地挂起,则会将打印机设备错误(故障)通过邮件通知您,并重新启用打印机。
其他打印问题疑难解答中的过程使用此策略帮助您解决 LP 打印服务遇到的各种问题。
如果在 /etc/syslog.conf 文件中启用 lpr.debug,则会提供各种有用的信息。由于会提供大量信息,因此首选的方法是仅在调试打印问题时启用此功能。
有关更多信息,请参见如何调试打印问题。
如果打印机和打印服务软件未正确配置,打印机可能会打印,但提供的输出可能不是您所期望的输出。
如果为打印机设置 LP 打印服务时使用了错误的打印机类型,则会向打印机发送不正确的打印机控制字符。结果将不可预测: 可能不打印任何内容,输出可能模糊不清,也可能使用错误的字符集或字体打印输出。
如果指定了不正确的文件内容类型,则可能仅会打印标题页。为打印机指定的文件内容类型表明打印机可以不经过滤直接打印的文件类型。当用户向打印机发送文件时,该文件将直接发送至打印机,而不会尝试对其进行过滤。如果打印机无法处理该文件内容类型,则会出现问题。
设置打印客户机时,由于打印服务器和打印客户机中的文件内容类型都必须是正确的,因此增加了出错机会。如果按照建议以 any 作为文件内容类型来设置打印客户机,则文件将直接发送到打印服务器,并且由打印服务器确定是否需要过滤。因此,仅需要在服务器中正确指定文件内容类型即可。
可以在打印客户机上指定文件内容,以便将过滤工作从服务器转移至客户机,但打印服务器必须支持该内容类型。
当缺省的 stty(标准终端)设置与打印机所需设置不匹配时,会出现许多格式问题。以下各节介绍了某些设置不正确时将出现的情况。
当计算机的波特设置与打印机的波特设置不匹配时,通常会得到一些输出,但是这些输出看起来与提交打印的文件不同。此时将显示随机字符,并且带有特殊字符和多余间距的异常混合。LP 打印服务的缺省设置为 9600 波特。
如果打印机通过并行端口连接,则波特设置无关紧要。
有些打印机使用奇偶校验位来确保接收进行打印的数据在传输过程中未混淆。计算机和打印机的奇偶位设置必须相匹配。如果不匹配,则某些字符根本不会打印出来或被其他字符所替换。在此情况下,输出看似正确。字间距合适,许多字母也都位置正确。缺省情况下,LP 打印服务不设置奇偶位。
如果文件中包含制表符,但是打印机没有预期到制表符,则打印的输出可能包含文件的完整内容,但文本可能都挤到右边界。此外,如果打印机的制表符设置不正确,文本可能没有左边界、都挤到一起、集中到页面中的某个部分或设置为错误的双倍间距。制表符的缺省设置以八个空格为间隔。
如果本应为单倍间距却输出为双倍间距,则表明不是打印机的制表符设置错误就是打印机在每次回车后添加了一次换行。LP 打印服务在每次换行前添加一次回车,因此这种组合会导致出现两次换行。
如果沿页面向下以 Z 字形打印,则不会设置在每次换行前发送回车的 stty 选项 onlcr。缺省情况下会设置 stty=onlcr 选项,但您在尝试解决其他打印问题时可能已清除该选项。
如果键入任何一个 lp 命令(例如 lpsystem、lpadmin 或 lpstat)后没有出现相应信息(未显示任何错误消息、状态信息或提示符),则 LP 调度程序可能存在问题。通过停止并重新启动 LP 调度程序通常可以解决此类问题。请参见如何停止打印调度程序了解相关说明。
您可能会发现,即使某台打印机收到的打印请求已开始排队,但该打印机仍处于空闲状态。
打印机在本不应该空闲时而处于空闲状态可能是由于以下原因之一:
正在过滤当前的打印请求。
打印机存在故障。
网络问题可能中断打印进程。
降低在后台运行的打印过滤器的速度,以避免阻碍打印机。需要过滤的打印请求在过滤之前不会进行打印。
当 LP 打印服务检测到故障后,会自动继续进行打印,但不会立即进行。LP 打印服务在重试之前会等待大约五分钟的时间,然后继续尝试,直到打印请求成功执行为止。可以通过启用打印机来强制立即进行重试。
通过网络打印文件时,可能会遇到以下类型的问题:
发送至打印服务器的请求可能在客户机系统(本地)队列中进行备份。
发送至打印服务器的请求可能在打印服务器(远程)队列中进行备份。
由于以下原因,提交至打印服务器的打印请求可能会在客户机系统队列中进行备份:
打印服务器已关闭。
打印机在打印服务器中处于禁用状态。
打印客户机与打印服务器之间的网络已断开。
未正确设置基础网络软件。
在跟踪问题的来源时,应停止向队列中添加新请求。有关更多信息,请参见如何接受或拒绝打印机的打印请求。
如果打印请求备份在打印服务器队列中,则可能已禁用打印机。当打印机接受了请求,但不处理这些请求时,这些请求将进行排队等待打印。除非还有其他问题,否则一旦启用打印机,就应打印队列中的打印请求。
用户可能输入打印请求并收到通知客户机系统已接受该请求,然后收到打印服务器拒绝该请求的邮件。
出现这些冲突消息的原因可能是:
打印客户机可能要接受请求,而打印服务器却拒绝请求。
打印客户机中对打印机的定义与打印服务器中对该打印机的定义不匹配。具体而言,客户机和服务器系统中对过滤器、字符集、打印轮或格式等打印作业组件的定义不同。
应检查在打印客户机和打印服务器中注册的这些作业组件是否具有相同的定义,以便本地用户可以访问打印服务器上的打印机。
本节包含有关以下主题的逐步说明:
如何解决无输出问题
如何解决错误输出问题
如何取消挂起 lp 命令
如何解决空闲(挂起)打印机问题
如何解决冲突的状态消息
此任务包括以下过程,用于在向打印机提交打印请求而未打印任何内容时尝试进行故障排除:
检查硬件(如何检查打印机硬件)。
检查网络(如何检查打印机网络连接)。
检查 LP 打印服务基本功能(如何检查 LP 打印服务的基本功能)。
检查从打印客户机到打印服务器的打印(如何检查从打印客户机到打印服务器的打印)。
在转到打印客户机/服务器一节之前,请先按所列顺序尝试前三个步骤。但是,如果打印标题页而不打印其他内容,请转到如何解决错误输出下的说明。
检查打印机是否已插电并已打开。
检查电缆是否已连接至打印机端口以及系统或服务器上的端口。
确保电缆正确并且无缺陷。
请参阅制造商文档。如果打印机连接至串行端口,请验证电缆是否支持硬件流量控制。空调制解调器适配器支持此控制。下表显示用于空调制解调器电缆的管脚配置。
主机 |
打印机 |
|
---|---|---|
Mini-Din-8 |
25-Pin D-sub |
25-Pin D-sub |
- |
1 (FG) |
1(FG) |
3(TD) |
2(TD) |
3(RD) |
5(RD) |
3(RD) |
2(TD) |
6(RTS) |
4(RTS) |
5(CTS) |
2(CTS) |
5(CTS) |
4(RTS) |
4(SG) |
7(SG) |
7(SG) |
7(DCD) |
6(DSR)、8(DCD) |
20(DTR) |
1(DTR) |
20(DTR) |
6(DSR)、8(DCD) |
检查针对端口的所有硬件交换机是否设置正确。
请参见打印机文档以了解正确设置。
检查打印机是否可操作。
如果打印机有自检功能,请使用该功能。检查打印机文档,以了解有关打印机自检的信息。
检查计算机和打印机的波特设置是否正确。
如果计算机和打印机的波特设置不同,有时候会不打印任何内容,但更多情况下会获得错误输出。有关说明,请参见如何解决错误输出。
检查打印服务器与打印客户机之间的网络链接是否已正确设置。
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 之间的空白必须是制表符。
创建 lpr.debug 文件。
# touch /var/tmp/lpr.debug |
重新启动 syslog 服务。
# svcadm restart system.log |
以下过程以打印机 luna 为例来检查基本的 LP 打印服务功能。
在打印服务器上,确保 LP 打印服务正在运行。
使用以下方法之一检查 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 |
|
如果未运行调度程序,请成为超级用户 lp 或同等角色。使用以下方法之一启动调度程序。
使用 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。
如果打印机类型或文件内容类型错误,请尝试在打印客户机上将打印类型设置为 unknown,将内容类型设置为 any。
# lpadmin -p printer-name -T printer-type -I file-content-type |
在打印服务器上,确保打印机未出现故障。
确保未将打印机错误设置为登录终端。
很容易错误地将打印机设置为登录终端,因此即使在您认为不适用的情况下,也要检查这种可能性。
在 ps -ef 命令输出中查找打印机端口项。
# 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 |
检查 ps -ef 命令输出,以确认打印机端口不再是登录设备。
如果在基本 LP 打印服务功能中找不到打印问题的根源,请继续进行以下针对所适用的特定客户机/服务器情况的过程之一。
检查打印服务器上的 LP 打印服务的基本功能(如果尚未执行此操作)。
有关检查基本功能的说明,请参见如何检查 LP 打印服务的基本功能。在从打印客户机发出请求但未打印任何内容时,请在尝试找出原因之前确保打印机可在本地正常运行。
如果尚未在打印客户机中检查 LP 打印服务的基本功能,请执行此操作。
在打印客户机中,必须启用打印机并接受请求,才能打印来自客户机的任何请求。
对于下面的大多数步骤,您必须作为超级用户或 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 # |
以上示例说明了打开并且正在运行的打印服务器。
如果打印服务器不能正常运行,请返回到步骤 1。
以超级用户 lp 或同等角色的身份登录。
确保打印机类型正确。
不正确的打印机类型可能会导致不正确的输出。例如,如果指定打印机类型为 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: $ |
查阅打印机制造商的文档,确定打印机型号。
如果打印机类型不正确,请使用 Solaris Print Manager 的“修改打印机属性”窗口或使用以下 lpadmin 命令进行更改。
# lpstat -p printer-name -T printer-type |
在打印客户机上,打印机类型应为 unknown。在打印服务器上,打印机类型必须与定义的 terminfo 项相匹配,以支持您的打印机型号。如果没有用于您的打印机类型的 terminfo 项,请参见如何为不支持的打印机添加 terminfo 项。
为打印机指定的文件内容类型指示了打印机可以直接打印而不必进行过滤的文件的类型。错误的文件内容类型会导致在需要过滤时跳过过滤。
记下在以前的步骤中 lpstat 命令提供的有关文件内容类型的信息。
在打印客户机中,除非有理由指定一个或多个明确的内容类型,否则文件内容类型应为 any。如果在客户机中指定内容,则在打印客户机中而不是打印服务器上进行过滤。此外,客户机中的内容类型必须与打印服务器中指定的内容类型相匹配,依此类推,打印服务器还必须反映打印机的功能。
查阅打印机制造商的文档,确定打印机可以直接打印的文件类型。
用于表示这些文件类型的名称不必与制造商使用的名称相匹配。但是,使用的名称必须与 LP 打印服务可识别的过滤器使用的名称一致。
如果文件内容类型不正确,请使用 Solaris Print Manager 的“修改打印机属性”窗口或以下 lpadmin 命令进行更改。
# 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 命令提交请求以强制进行过滤,这样可以下载文档所需的非驻留字体。
确保打印机端口的 stty 设置正确。
阅读打印机文档,确定打印机端口的正确 stty 设置。
如果打印机连接至并行或 USB 端口,则与波特设置无关。
使用 stty 命令检查当前设置。
# 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 选项。
选项 |
含义 |
---|---|
-9600 |
将波特率设置为 9600 |
-cs8 |
设置 8 位字节 |
-cstopb |
每个字节发送一个停止位 |
-parity |
不生成奇偶位 |
-ixon |
启用 XON/XOFF(也称为 START/STOP 或 DC1/DC3) |
-opost |
使用此表中后面的所有设置执行“输出后处理” |
-olcuc |
不将小写映射为大写 |
-onlcr |
将换行更改为回车/换行 |
-ocrnl |
不将回车更改为换行 |
-onocr |
即使在第 0 列也输出回车 |
-n10 |
换行后无延迟 |
-cr0 |
回车后无延迟 |
-tab0 |
制表符后无延迟 |
-bs0 |
退格后无延迟 |
-vt0 |
垂直制表符后无延迟 |
-ff0 |
换页后无延迟 |
更改 stty 设置。
# lpadmin -p printer-name -o "stty= options" |
stty 值 |
结果 |
因设置不正确可能产生的问题 |
---|---|---|
110、300、600、1200、1800、2400、4800、9600、19200、38400 |
将波特率设置为指定值(仅输入一个波特率) |
可能打印随机字符和特殊字符,并且间距可能不一致 |
oddp evenp -parity |
设置奇数奇偶校验 设置偶数奇偶校验 不设置奇偶校验 |
字符缺失或字符错误随机出现 |
-tabs |
不设置制表符 |
文本挤至右边界 |
tabs |
以八个空格为间隔设置制表符 |
文本没有左边界,聚在一起或者重叠在一起 |
-onlcr |
在行首不设置回车 |
错误的双倍间距 |
onlcr |
在行首设置回车 |
沿页面向下以 Z 字形打印 |
通过将选项列表用单引号引起并用空格分隔每个选项,可以更改多个选项设置。例如,假设打印机要求您启用奇数奇偶校验并设置 7 位的字符大小。您可键入与以下示例所示类似的命令:
# lpadmin -p neptune -o "stty='parenb parodd cs7'" |
stty 选项 parenb 启用奇偶校验检查/生成,parodd 设置奇数奇偶校验生成,cs7 将字符大小设置为 7 位。
验证文档是否正确打印。
# lp -d printer-name filename |
以超级用户 lp 或同等角色的身份登录。
停止 LP 打印服务。
# svcadm disable /application/print/server |
重新启动 LP 打印服务。
# 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 $ |
确定是否正在过滤第一个等待请求。如果输出与以上示例类似,则正在过滤文件;该打印机并未挂起,只是需要一些时间来处理请求。
查找有关打印机故障的消息并尝试更正故障(如果有)。
根据打印机故障警报的指定方法,消息可能直接通过电子邮件发送给超级用户,也可能写入超级用户登录的终端。
重新启用打印机。
# enable printer-name |
如果打印机故障阻止了请求,此命令将强制重试。如果此命令不起作用,请继续本节中的其他过程。
在打印客户机上,停止进一步对向打印服务器发送的打印请求排队。
# reject printer-name |
在打印客户机上,将 "are you there?" 请求发送到打印服务器。
print-client# ping print-server print-server is alive |
如果收到消息 print-server not available,则表示可能存在网络问题。
修复以上问题后,允许对新打印请求排队。
# accept printer-name |
如果需要,请重新启用打印机。
# enable printer-name |
在打印服务器上,停止进一步对打印客户机发送至打印服务器的打印请求排队。
# reject printer-name |
显示 lpsched 日志文件。
# more /var/lp/logs/lpsched |
在无法打印从打印客户机到打印服务器的打印请求时,显示的信息可能有助于查明造成问题的原因。
修复该问题后,允许对新打印请求排队。
# accept printer-name |
# enable printer-name |