系统管理指南:打印

第 13 章 Oracle Solaris OS 中的打印问题疑难解答(任务)

本章介绍如何解决设置和维护打印服务时可能遇到的打印问题。

下面列出了本章中的信息:

有关打印的概述信息,请参见第 1 章

有关打印机设置问题疑难解答的提示

有时,设置打印机时,可能需要查找打印机的设备标识信息。有关更多信息,请参见查找有关并行的和 USB 连接的打印设备的信息

查找有关并行的和 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)

打印问题疑难解答的提示

有时在设置打印机后,您会发现不能打印任何内容。或者,可能打印过程中超出限制: 打印了一些内容,但这并不是您所期望的,输出不正确或模糊不清。

然后,在解决这些问题后,还可能出现其他问题,例如:


注 –

尽管本章中的许多建议都与并行打印机相关,但这些建议也适用于更常见的串行打印机。


无输出疑难解答(不打印任何内容)

不打印任何内容时,通常有三个方面需要检查:

如果有标题页,但没有其他任何内容,则是错误输出的特殊情况。请参见错误输出疑难解答

检查硬件

硬件是需要检查的第一个方面。很明显,应确保打印机已插电并已打开。此外,还应参阅制造商文档以了解有关硬件设置的信息。有些计算机使用可更改打印机端口特性的硬件交换机。

打印机硬件包括打印机、将打印机连接至计算机的电缆以及电缆各端插入的端口。一般方法是从打印机开始一直检查到计算机。检查打印机。检查电缆与打印机连接的位置。检查电缆。检查电缆与计算机连接的位置。

检查网络

此类问题在从打印客户机向打印服务器发出远程打印请求时更为常见。应确保已启用打印服务器与打印客户机之间的网络访问。

如果网络运行的是网络信息服务扩充版本 (Network Information Service Plus, NIS+),请参见《System Administration Guide: Naming and Directory Services (NIS+)》,了解启用系统之间访问的说明。如果网络运行的不是 NIS 或 NIS+,则在设置打印服务器和打印客户机之前,请在打印服务器上的 /etc/hosts 文件中包含 Internet 地址和每个客户机系统的系统名称。此外,还必须将打印服务器的 IP 地址和系统名称包含到每个打印客户机系统的 /etc/hosts 文件中。

检查 LP 打印服务

为使打印正常进行,必须在打印服务器上运行 LP 调度程序。如果未运行,您需要使用以下命令启动该调度程序:


# svcadm enable application/print/server

除了运行调度程序之外,打印机还必须已启用并接受请求,然后才能生成输出。如果 LP 打印服务不接受对打印机的请求,则将拒绝已提交的打印请求。通常在此情况下,用户会在提交打印请求后收到一条警告消息。如果没有为打印机启用 LP 打印服务,打印请求将在系统中继续排队,直到启用打印机为止。

通常,应该按如下步骤分析打印问题:

其他打印问题疑难解答中的过程使用此策略帮助您解决 LP 打印服务遇到的各种问题。

调试打印问题

如果在 /etc/syslog.conf 文件中启用 lpr.debug,则会提供各种有用的信息。由于会提供大量信息,因此首选的方法是仅在调试打印问题时启用此功能。

有关更多信息,请参见如何调试打印问题

错误输出疑难解答

如果打印机和打印服务软件未正确配置,打印机可能会打印,但提供的输出可能不是您所期望的输出。

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

如果为打印机设置 LP 打印服务时使用了错误的打印机类型,则会向打印机发送不正确的打印机控制字符。结果将不可预测: 可能不打印任何内容,输出可能模糊不清,也可能使用错误的字符集或字体打印输出。

如果指定了不正确的文件内容类型,则可能仅会打印标题页。为打印机指定的文件内容类型表明打印机可以不经过滤直接打印的文件类型。当用户向打印机发送文件时,该文件将直接发送至打印机,而不会尝试对其进行过滤。如果打印机无法处理该文件内容类型,则会出现问题。

设置打印客户机时,由于打印服务器和打印客户机中的文件内容类型都必须是正确的,因此增加了出错机会。如果按照建议以 any 作为文件内容类型来设置打印客户机,则文件将直接发送到打印服务器,并且由打印服务器确定是否需要过滤。因此,仅需要在服务器中正确指定文件内容类型即可。

可以在打印客户机上指定文件内容,以便将过滤工作从服务器转移至客户机,但打印服务器必须支持该内容类型。

检查 stty 设置

当缺省的 stty(标准终端)设置与打印机所需设置不匹配时,会出现许多格式问题。以下各节介绍了某些设置不正确时将出现的情况。

波特设置错误

当计算机的波特设置与打印机的波特设置不匹配时,通常会得到一些输出,但是这些输出看起来与提交打印的文件不同。此时将显示随机字符,并且带有特殊字符和多余间距的异常混合。LP 打印服务的缺省设置为 9600 波特。


注 –

如果打印机通过并行端口连接,则波特设置无关紧要。


奇偶校验设置错误

有些打印机使用奇偶校验位来确保接收进行打印的数据在传输过程中未混淆。计算机和打印机的奇偶位设置必须相匹配。如果不匹配,则某些字符根本不会打印出来或被其他字符所替换。在此情况下,输出看似正确。字间距合适,许多字母也都位置正确。缺省情况下,LP 打印服务不设置奇偶位。

制表符设置错误

如果文件中包含制表符,但是打印机没有预期到制表符,则打印的输出可能包含文件的完整内容,但文本可能都挤到右边界。此外,如果打印机的制表符设置不正确,文本可能没有左边界、都挤到一起、集中到页面中的某个部分或设置为错误的双倍间距。制表符的缺省设置以八个空格为间隔。

回车设置错误

如果本应为单倍间距却输出为双倍间距,则表明不是打印机的制表符设置错误就是打印机在每次回车后添加了一次换行。LP 打印服务在每次换行前添加一次回车,因此这种组合会导致出现两次换行。

如果沿页面向下以 Z 字形打印,则不会设置在每次换行前发送回车的 stty 选项 onlcr。缺省情况下会设置 stty=onlcr 选项,但您在尝试解决其他打印问题时可能已清除该选项。

挂起 lp 命令疑难解答

如果键入任何一个 lp 命令(例如 lpsystemlpadminlpstat)后没有出现相应信息(未显示任何错误消息、状态信息或提示符),则 LP 调度程序可能存在问题。通过停止并重新启动 LP 调度程序通常可以解决此类问题。请参见如何停止打印调度程序了解相关说明。

空闲(挂起)打印机疑难解答

您可能会发现,即使某台打印机收到的打印请求已开始排队,但该打印机仍处于空闲状态。

打印机在本不应该空闲时而处于空闲状态可能是由于以下原因之一:

检查打印过滤器

降低在后台运行的打印过滤器的速度,以避免阻碍打印机。需要过滤的打印请求在过滤之前不会进行打印。

检查打印机故障

当 LP 打印服务检测到故障后,会自动继续进行打印,但不会立即进行。LP 打印服务在重试之前会等待大约五分钟的时间,然后继续尝试,直到打印请求成功执行为止。可以通过启用打印机来强制立即进行重试。

检查网络问题

通过网络打印文件时,可能会遇到以下类型的问题:

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

由于以下原因,提交至打印服务器的打印请求可能会在客户机系统队列中进行备份:

在跟踪问题的来源时,应停止向队列中添加新请求。有关更多信息,请参见如何接受或拒绝打印机的打印请求

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

如果打印请求备份在打印服务器队列中,则可能已禁用打印机。当打印机接受了请求,但不处理这些请求时,这些请求将进行排队等待打印。除非还有其他问题,否则一旦启用打印机,就应打印队列中的打印请求。

冲突状态消息疑难解答

用户可能输入打印请求并收到通知客户机系统已接受该请求,然后收到打印服务器拒绝该请求的邮件。

出现这些冲突消息的原因可能是:

应检查在打印客户机和打印服务器中注册的这些作业组件是否具有相同的定义,以便本地用户可以访问打印服务器上的打印机。

其他打印问题疑难解答

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

无打印机输出疑难解答

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

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

Procedure如何检查打印机硬件

  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. 检查计算机和打印机的波特设置是否正确。

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

Procedure如何检查打印机网络连接

  1. 检查打印服务器与打印客户机之间的网络链接是否已正确设置。


    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 地址?

Procedure如何调试打印问题

  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
    

Procedure如何检查 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 打印服务功能中找不到打印问题的根源,请继续进行以下针对所适用的特定客户机/服务器情况的过程之一。

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

  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。

Procedure如何解决错误输出

  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. 如果打印机类型不正确,请使用 Solaris Print Manager 的“修改打印机属性”窗口或使用以下 lpadmin 命令进行更改。


      # lpstat -p printer-name -T printer-type
      

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

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

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

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

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

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

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

    3. 如果文件内容类型不正确,请使用 Solaris Print Manager 的“修改打印机属性”窗口或以下 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
    

Procedure如何取消挂起 LP 打印服务

  1. 以超级用户 lp 或同等角色的身份登录。

  2. 停止 LP 打印服务。


    # svcadm disable /application/print/server
    
  3. 重新启动 LP 打印服务。


    # svcadm enable /application/print/server
    

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

空闲(挂起)打印机疑难解答

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

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

  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
$

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

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

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

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

  2. 重新启用打印机。


    # enable printer-name 
    

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

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

  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 
    

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

  1. 在打印服务器上,停止进一步对打印客户机发送至打印服务器的打印请求排队。


    # reject printer-name 
    
  2. 显示 lpsched 日志文件。


    # more /var/lp/logs/lpsched
    

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

  3. 修复该问题后,允许对新打印请求排队。


    # accept printer-name
    
  4. 如有必要,请在打印服务器上重新启用打印机。


    # enable printer-name
    

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

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


    # lpstat -p printer-name
    

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

  2. 在打印服务器上,检查打印客户机上的打印机定义是否与打印服务器上的打印机定义相匹配。


    # lpstat -p -l printer-name
    

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