JavaScript is required to for searching.
跳过导航链接
退出打印视图
系统管理指南:打印     Oracle Solaris 10 8/11 Information Library (简体中文)
search filter icon
search icon

文档信息

关于本书

1.  关于在 Oracle Solaris 操作系统中进行打印的简介

2.  计划打印(任务)

3.  设置网络打印服务(任务)

4.  使用 Oracle Solaris Print Manager 设置和管理打印机(任务)

5.  使用 LP 打印命令设置打印机(任务)

6.  使用 LP 打印命令管理打印机(任务)

7.  定制 LP 打印服务和打印机(任务)

8.  管理 LP 打印调度程序和打印请求(任务)

9.  管理网络上的打印机(任务)

10.  管理字符集、过滤器、表单和字体(任务)

11.  使用 PPD 文件管理实用程序管理打印机(任务)

12.  在 Oracle Solaris 操作系统中打印(参考)

13.  Oracle Solaris OS 中的打印问题故障排除(任务)

有关打印机设置问题故障排除的提示

查找有关并行的和 USB 连接的打印设备的信息

打印问题故障排除的提示

无输出故障排除(不打印任何内容)

检查硬件

检查网络

检查 LP 打印服务

调试打印问题

错误输出故障排除

检查打印机类型和文件内容类型

检查 stty 设置

波特设置错误

奇偶校验设置错误

制表符设置错误

回车设置错误

挂起 lp 命令故障排除

空闲(挂起)打印机故障排除

检查打印过滤器

检查打印机故障

检查网络问题

在本地队列中备份的打印请求

在远程队列中备份的打印请求

冲突状态消息故障排除

其他打印问题故障排除

无打印机输出故障排除

如何检查打印机硬件

如何检查打印机网络连接

如何调试打印问题

如何检查 LP 打印服务的基本功能

如何检查从打印客户机到打印服务器的打印

如何解决错误输出问题

如何取消挂起 LP 打印服务

空闲(挂起)打印机故障排除

如何检查打印机是否做好打印准备

检查打印过滤

如何在打印机故障后继续打印

在本地队列中备份打印请求时如何向远程打印机发送这些请求

如何释放来自打印客户机并备份在打印服务器队列中的打印请求

如何解决打印机状态消息冲突

A.  使用 Internet 打印协议

词汇表

索引

其他打印问题故障排除

本节包含有关以下主题的逐步说明:

无打印机输出故障排除

此任务包括以下过程,用于在向打印机提交打印请求而未打印任何内容时尝试进行故障排除:

在转到打印客户机/服务器一节之前,请先按所列顺序尝试前三个步骤。但是,如果打印标题页而不打印其他内容,请转到如何解决错误输出问题下的说明。

如何检查打印机硬件

  1. 检查打印机是否已插电并已打开。
  2. 检查电缆是否已连接至打印机端口以及系统或服务器上的端口。
  3. 确保电缆正确并且无缺陷。

    请参阅制造商文档。如果打印机连接至串行端口,请验证电缆是否支持硬件流量控制。空调制解调器适配器支持此控制。下表显示用于空调制解调器电缆的管脚配置。


    主机
    打印机
    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)
  4. 检查针对端口的所有硬件交换机是否设置正确。

    请参见打印机文档以了解正确设置。

  5. 检查打印机是否可操作。

    如果打印机有自检功能,请使用该功能。检查打印机文档,以了解有关打印机自检的信息。

  6. 检查计算机和打印机的波特设置是否正确。

    如果计算机和打印机的波特设置不同,有时候会不打印任何内容,但更多情况下会获得错误输出。有关说明,请参见如何解决错误输出问题

如何检查打印机网络连接

如何调试打印问题

  1. 在要调试远程打印问题的系统上,成为超级用户或承担等效角色。

    角色包含授权和具有特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的"配置 RBAC(任务列表)"

  2. 键入以下命令:
    # echo "lpr.debug /var/tmp/lpr.debug" >>/etc/syslog.conf

    注 - lpr.debug/var/tmp/lpr.debug 之间的空白必须是制表符。


  3. 创建 lpr.debug 文件。
    # touch /var/tmp/lpr.debug
  4. 重新启动 syslog 服务。
    # svcadm restart system.log

如何检查 LP 打印服务的基本功能

以下过程以打印机 luna 为例来检查基本的 LP 打印服务功能。

  1. 在打印服务器上,确保 LP 打印服务正在运行。
    1. 使用以下方法之一检查 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
    2. 如果未运行调度程序,请成为超级用户 lp 或同等角色。使用以下方法之一启动调度程序。
      • 使用 lpsched 命令。

        # /usr/lib/lpsched
        Print services started.

        显示一条消息,指示未启动打印服务。

      • 使用 svcadm 命令。

        # svcadm enable application/print/server

        使用 svcadm 命令时,不显示指示是否已启动打印服务的消息。要确定打印服务是否联机,请再次运行 svcs application/print/server 命令。

      如果在启动该调度程序时遇到问题,请参见如何取消挂起 LP 打印服务

  2. 在打印服务器和打印客户机上,确保打印机正在接受请求。
    1. 检查打印机是否正在接受请求。
      # lpstat -a
      mars accepting requests since Jan 12 14:23 2004
      luna not accepting requests since Jan 12 14:23 2004
      unknown reason

      此命令可验证 LP 系统是否接受对为系统配置的每台打印机的请求。

    2. 如果打印机不接受请求,请成为超级用户 lp 或同等角色,并允许打印机接受打印请求。
      # accept luna

      指定打印机现在可以接受请求。

  3. 在打印服务器和打印客户机上,确保打印机可以打印提交的打印请求。
    1. 检查是否已启用打印机。
      # lpstat -p luna
      printer luna disabled since Jan 12 14:25 2004.
      available.
      unknown reason

      此命令将显示有关打印机状态的信息。可以省略打印机名称,以获取为系统设置的所有打印机的有关信息。以下示例显示了禁用的打印机。

    2. 如果打印机被禁用,请成为超级用户 lp 或同等角色,然后启用打印机。
      # enable luna
      printer "luna" now enabled.

      指定的打印机已启用,可以处理打印请求。

  4. 在打印服务器上,确保打印机已连接到正确的串行端口。
    1. 检查打印机是否已连接至正确的串行端口。
      # lpstat -t
      scheduler is running
      system default destination: luna
      device for luna: /dev/term/a

      该消息 device for printer-name 可显示端口地址。电缆是否连接至 LP 打印服务所连接的端口?如果端口正确,请跳转到步骤 5

    2. 成为超级用户或承担等效角色。
    3. 更改表示端口的设备文件的文件拥有权。
      # chown lp device-filename

      此命令将指定特殊用户 lp 作为设备文件的属主。在此命令中,device-filename 是设备文件的名称。

    4. 更改打印机端口设备文件的权限。
      # chmod 600 device-filename

      此命令仅允许超级用户 lp 或同等角色访问打印机端口设备文件。

  5. 在打印服务器和打印客户机上,确保已正确配置打印机。
    1. 检查是否已正确配置打印机。
      # lpstat -p luna -l
      printer luna is idle. enabled since Jan 12 14:24 2004. available
              Content types: postscript
              Printer types: PS

      以上示例说明了一台已正确配置并可用于处理打印请求的 PostScript 打印机。如果打印机类型和文件内容类型正确,请跳转到步骤 6

    2. 如果打印机类型或文件内容类型错误,请尝试在打印客户机上将打印类型设置为 unknown,将内容类型设置为 any
      # lpadmin -p printer-name -T printer-type -I file-content-type
  6. 在打印服务器上,确保打印机未出现故障。
    1. 检查打印机是否因打印机故障而等待。
      # lpadmin -p printer-name -F continue 

      如果 LP 打印服务因故障而等待,则此命令会指示 LP 打印服务继续。

    2. 通过重新启用打印机强制立即重试。
      # enable printer-name 
    3. (可选的)指示 LP 打印服务启用打印机故障的快速通知。
      # lpadmin -p printer-name -A 'write root'

      此命令指示 LP 打印服务设置缺省策略,以便在打印机出现故障时向根目录写入并向根目录所在的终端发送打印机故障消息。这可能有助于您在尝试修复问题时快速获得故障通知。

  7. 确保未将打印机错误设置为登录终端。

    注 - 很容易错误地将打印机设置为登录终端,因此即使在您认为不适用的情况下,也要检查这种可能性。


    1. 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## 信息进行判断。如果端口设置正确,请跳过此过程中最后的步骤。

    2. 取消打印请求。
      # cancel request-id

      在此命令中,request-id 是要取消的打印请求的请求 ID 号。

    3. 将打印机端口设置为非登录设备。
      # lpadmin -p printer-name -h
    4. 检查 ps -ef 命令输出,以确认打印机端口不再是登录设备。

      如果在基本 LP 打印服务功能中找不到打印问题的根源,请继续进行以下针对所适用的特定客户机/服务器情况的过程之一。

如何检查从打印客户机到打印服务器的打印

  1. 检查打印服务器上的 LP 打印服务的基本功能(如果尚未执行此操作)。

    有关检查基本功能的说明,请参见如何检查 LP 打印服务的基本功能。在从打印客户机发出请求但未打印任何内容时,请在尝试找出原因之前确保打印机可在本地正常运行。

  2. 如果尚未在打印客户机中检查 LP 打印服务的基本功能,请执行此操作。

    在打印客户机中,必须启用打印机并接受请求,才能打印来自客户机的任何请求。


    注 - 对于下面的大多数步骤,您必须作为超级用户或 lp 登录。


  3. 确保打印服务器可以访问。
    1. 在打印客户机上,将 "are you there?" 请求发送到打印服务器。
      print-client# ping print-server

      如果收到消息 print-server not available,则表示可能存在网络问题。

  4. 验证打印服务器是否正常运行。
    # 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
    #

    以上示例说明了打开并且正在运行的打印服务器。

  5. 如果打印服务器不能正常运行,请返回到步骤 1。

如何解决错误输出问题

  1. 以超级用户 lp 或同等角色的身份登录。
  2. 确保打印机类型正确。

    不正确的打印机类型可能会导致不正确的输出。例如,如果指定打印机类型为 PS 并且页面以相反顺序打印,请尝试类型为 PSR 的打印机。(这些类型名称必须大写。)而且,错误的打印机类型还可能导致文本丢失、文本模糊不清或者文本字体错误。要确定打印机类型,请检查 terminfo 数据库中的项。有关 terminfo 数据库结构的信息,请参见打印机类型

    1. 在打印机服务器上,显示打印机的特性。
      $ 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:  
      $
    2. 查阅打印机制造商的文档,确定打印机型号。
    3. 如果打印机类型不正确,请使用 Oracle Solaris Print Manager 的 "Modify Printer Properties"(修改打印机属性)窗口或使用以下 lpadmin 命令进行更改。
      # lpstat -p printer-name -T printer-type

      在打印客户机上,打印机类型应为 unknown。在打印服务器上,打印机类型必须与定义的 terminfo 项相匹配,以支持您的打印机型号。如果没有用于您的打印机类型的 terminfo 项,请参见如何为不支持的打印机添加 terminfo

  3. 如果打印标题页,但不输出文档正文,请检查文件内容类型。

    为打印机指定的文件内容类型指示了打印机可以直接打印而不必进行过滤的文件的类型。错误的文件内容类型会导致在需要过滤时跳过过滤。

    1. 记下在以前的步骤中 lpstat 命令提供的有关文件内容类型的信息。

      在打印客户机中,除非有理由指定一个或多个明确的内容类型,否则文件内容类型应为 any。如果在客户机中指定内容,则在打印客户机中而不是打印服务器上进行过滤。此外,客户机中的内容类型必须与打印服务器中指定的内容类型相匹配,依此类推,打印服务器还必须反映打印机的功能。

    2. 查阅打印机制造商的文档,确定打印机可以直接打印的文件类型。

      用于表示这些文件类型的名称不必与制造商使用的名称相匹配。但是,使用的名称必须与 LP 打印服务可识别的过滤器使用的名称一致。

    3. 如果文件内容类型不正确,请使用 Oracle Solaris Print Manager 的 "Modify Printer Properties"(修改打印机属性)窗口或以下 lpadmin 命令进行更改。
      # lpadmin -p printer-name -I file-content-type(s)

      根据需要,可以在打印客户机或打印服务器上分别运行此命令,也可以同时在两者上运行此命令。在打印客户机中尝试 -I any,而在打印服务器上尝试 -I ""。后者指定一个空的文件内容类型列表,这意味着将尝试过滤所有文件,因为打印机只能直接打印精确匹配其打印机类型的文件。

      不能打印文件时,应优先考虑此组合。如果可行,您可能需要尝试在打印服务器上指定明确的内容类型,以减少不必要的过滤。对于本地 PostScript 打印机,如果打印机支持这些类型,则应使用 postscriptpostscript,simple。请注意,PSPSR 不是文件内容类型,它们是打印机类型。

      如果省略 -I,则文件内容列表缺省为 simple。如果使用 -I 选项并且要指定 simple 以外的文件内容类型,则列表中必须包括 simple

      指定多个文件内容类型时,请用逗号分隔名称。也可以用空格分隔名称,并用引号将列表引起来。如果指定 any 作为文件内容类型,则不进行任何过滤,并应仅发送打印机可以直接打印的文件类型至打印机。

  4. 检查打印请求未跳过下载字体所需的过滤。

    如果用户使用 lp -T PS 命令将打印请求提交到 PostScript 打印机,则不会执行过滤。请尝试用 lp -T postscript 命令提交请求以强制进行过滤,这样可以下载文档所需的非驻留字体。

  5. 确保打印机端口的 stty 设置正确。
    1. 阅读打印机文档,确定打印机端口的正确 stty 设置。

      注 - 如果打印机连接至并行或 USB 端口,则与波特设置无关。


    2. 使用 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
      换页后无延迟
    3. 更改 stty 设置。
      # lpadmin -p printer-name -o "stty= options" 

      使用下表选择 stty 选项可更正各种影响打印输出的问题。


      stty
      结果
      因设置不正确可能产生的问题
      110300600120018002400480096001920038400
      将波特率设置为指定值(仅输入一个波特率)
      可能打印随机字符和特殊字符,并且间距可能不一致
      oddp

      evenp

      -parity

      设置奇数奇偶校验

      设置偶数奇偶校验

      不设置奇偶校验

      字符缺失或字符错误随机出现
      -tabs
      不设置制表符
      文本挤至右边界
      tabs
      以八个空格为间隔设置制表符
      文本没有左边界,聚在一起或者重叠在一起
      -onlcr
      在行首不设置回车
      错误的双倍间距
      onlcr
      在行首设置回车
      沿页面向下以 Z 字形打印

      通过将选项列表用单引号引起并用空格分隔每个选项,可以更改多个选项设置。例如,假设打印机要求您启用奇数奇偶校验并设置 7 位的字符大小。您可键入与以下示例所示类似的命令:

      # lpadmin -p neptune -o "stty='parenb parodd cs7'"

      stty 选项 parenb 启用奇偶校验检查/生成,parodd 设置奇数奇偶校验生成,cs7 将字符大小设置为 7 位。

  6. 验证文档是否正确打印。
    # lp -d printer-name filename

如何取消挂起 LP 打印服务

  1. 以超级用户 lp 或同等角色的身份登录。
  2. 停止 LP 打印服务。
    # svcadm disable /application/print/server
  3. 重新启动 LP 打印服务。
    # svcadm enable /application/print/server

    LP 打印服务应重新启动。如果在重新启动调度程序时出现问题,请参见如何重新启动打印调度程序

空闲(挂起)打印机故障排除

此任务包括许多在打印机不应该空闲却处于空闲状态时要使用的过程。按顺序执行这些过程很有用,但不强制遵从该顺序。

如何检查打印机是否做好打印准备

  1. 显示打印机状态信息。
    # lpstat -p printer-name 

    显示的信息表明打印机处于空闲还是活动状态、已启用还是已禁用、可用还是不接受打印请求。如果一切正常,请继续本节中的其他过程。如果无法运行 lpstat 命令,请参见如何取消挂起 LP 打印服务

  2. 如果打印机不可用(不接受请求),请允许打印机接受请求。
    # accept printer-name 

    打印机开始接受请求进入其打印队列。

  3. 如果该打印机已禁用,请重新启用它。
    # 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
$

确定是否正在过滤第一个等待请求。如果输出与以上示例类似,则正在过滤文件;该打印机并未挂起,只是需要一些时间来处理请求。

如何在打印机故障后继续打印

  1. 查找有关打印机故障的消息并尝试更正故障(如果有)。

    根据打印机故障警报的指定方法,消息可能直接通过电子邮件发送给超级用户,也可能写入超级用户登录的终端。

  2. 重新启用打印机。
    # enable printer-name 

    如果打印机故障阻止了请求,此命令将强制重试。如果此命令不起作用,请继续本节中的其他过程。

在本地队列中备份打印请求时如何向远程打印机发送这些请求

  1. 在打印客户机上,停止进一步对向打印服务器发送的打印请求排队。
    # reject printer-name 
  2. 在打印客户机上,将 "are you there?" 请求发送到打印服务器。
    print-client# ping print-server
    print-server is alive

    如果收到消息 print-server not available,则表示可能存在网络问题。

  3. 修复以上问题后,允许对新打印请求排队。
    # accept printer-name 
  4. 如果需要,请重新启用打印机。
    # enable printer-name 

如何释放来自打印客户机并备份在打印服务器队列中的打印请求

  1. 在打印服务器上,停止进一步对打印客户机发送至打印服务器的打印请求排队。
    # reject printer-name 
  2. 显示 lpsched 日志文件。
    # more /var/lp/logs/lpsched

    在无法打印从打印客户机到打印服务器的打印请求时,显示的信息可能有助于查明造成问题的原因。

  3. 修复该问题后,允许对新打印请求排队。
    # accept printer-name
  4. 如有必要,请在打印服务器上重新启用打印机。
    # enable printer-name

如何解决打印机状态消息冲突

  1. 在打印服务器上,验证打印机是否已启用并接受请求。
    # lpstat -p printer-name

    当打印客户机接受请求而打印服务器拒绝请求时,用户将看到冲突的状态消息。

  2. 在打印服务器上,检查打印客户机上的打印机定义是否与打印服务器上的打印机定义相匹配。
    # lpstat -p -l printer-name

    查看打印机过滤器、字符集、打印轮或格式等打印作业组件的定义,以确保这些定义在客户机和服务器系统中相同,这样本地用户便可访问打印服务器系统中的打印机。