系统管理指南:打印

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