系统管理指南:打印

使用 LP 打印命令管理打印请求(任务图)

任务 

说明 

参考 

检查打印请求的状态。 

使用 lpstat 命令检查打印请求的状态。

如何检查打印请求的状态

启用或禁用打印机。 

使用 enabledisable 命令可以控制打印机对打印队列中的请求进行打印还是停止打印。

如何启用或禁用打印机

接受或拒绝打印机的打印请求。 

使用 acceptreject 命令可以打开或关闭存储要打印的请求的打印队列。

如何接受或拒绝打印机的打印请求

取消打印请求。 

使用 cancel 命令取消打印请求。

如何取消打印请求

取消特定用户的打印请求。 

取消特定用户的打印请求。 

如何取消特定用户的打印请求

将打印请求移动到其他打印机。 

移动或取消当前在打印机中排队的任何打印请求。 

如何将打印请求移动到其他打印机

更改打印请求的优先级。 

采用以下方式之一更改打印请求的优先级:

  • 如果打印请求尚未完成打印,则将其挂起。

  • 将打印请求移动到队列开头。

  • 更改仍在等待打印的作业的优先级。

如何更改打印请求的优先级

当用户从打印客户机提交打印请求时,打印请求将先添加到打印服务器上的队列中,然后发送到打印机。当打印请求在队列中时,您可以从客户机系统取消该打印请求或获取有关它的状态信息。您必须登录到打印服务器,才能使用 LP 打印服务命令移动、挂起、恢复打印请求或更改打印请求的优先级。这些操作有助于保持打印服务顺利进行。

下表列出了用于通过 lp -H 命令更改打印请求优先级的值。

表 8–1 用于更改打印请求优先级的值

-H change-priority 的值

说明 

hold

将打印请求挂起,直到您取消该请求或指示 LP 打印服务恢复打印该请求。 

resume

将已挂起的打印请求放回队列。该请求将根据其优先级和在队列中的位置进行打印。如果挂起已经在打印的打印作业,则 resume 会将打印请求放在队列开头,以便它成为打印的下一个请求。

immediate

将打印请求放在队列开头。如果请求已经在打印,则您可以挂起该请求,以允许立即打印下一个请求。 

Procedure如何检查打印请求的状态

  1. 成为超级用户或同等角色。

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

  2. 检查打印机和打印请求的状态。

    此处仅显示最常用的选项。有关其他有效选项,请参见 lpstat(1) 手册页。


    $ lpstat -o [list] | -u [user-list]
    -o list

    显示特定打印机上打印请求的状态。list 可以是一个或多个打印机名称、打印机类名或打印请求 ID。

    要为 list 指定多个打印机名称、类名和 ID,请使用空格或逗号分隔各值。如果使用空格,请用引号将值列表引起来。

    如果不指定 list,则将显示发送到所有打印机的打印请求的状态。

    -u user-list

    显示特定用户的打印请求的状态。user-list 可以是一个或多个用户名。

    要使用此命令指定多个用户,请使用空格或逗号分隔用户名。如果使用空格,请用引号将名称列表引起来。

    如果不指定 user-list,则将显示所有用户的打印请求的状态。

    使用 lpstat 命令检查打印请求的状态时,该命令会为每个打印请求显示一行。

    该行从左至右显示以下信息:

    • 请求 ID

    • 用户

    • 输出大小(字节)

    • 请求的日期和时间,

    • 有关请求的信息,如“正在过滤”


示例 8–4 检查打印请求的状态

以下示例说明用户 fred 具有一个在打印机 luna 上排队的打印请求。


$ lpstat
luna-1    fred     1261    Jul 12 17:34

以下示例说明用户 paul 当前在队列中没有打印请求。


$ lpstat -u paul

以下示例说明两个打印请求在打印机 moon 上排队。


$ lpstat -o moon
moon-78    root     1024   Jul 14 09:07
moon-79    root     1024   Jul 14 09:08

启用或禁用打印机的打印操作

enabledisable 命令控制打印机打印还是停止打印打印队列中的请求。当您禁用打印机时,打印机将停止打印队列中的请求。但是,请求仍被添加到队列中。若不希望将请求添加到队列中,则必须将打印机设置为拒绝打印请求。有关拒绝打印请求的信息,请参见接受或拒绝打印请求

使用 Solaris Print Manager 添加打印机后,将启用该打印机以执行打印任务并接受打印请求。Solaris Print Manager 不提供任何其他有关打印机处理的管理功能。

只要打印机被禁用(打印机出现故障时可能会出现此情况),您就必须启用打印机。启用打印机时,它将打印来自打印队列的请求,直到队列为空,即使打印服务拒绝打印队列中的其他请求时也是如此。

下图显示在禁用打印机时中断处理打印请求的时刻。

图 8–1 启用或禁用打印机时发生的情况

显示启用的打印机(处理队列中的请求)和禁用的打印机(不处理队列中的请求)的图。

Procedure如何启用或禁用打印机

  1. 成为超级用户或同等角色。

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

  2. 停止打印打印请求。


    # disable [-c | -W] [-r "reason"] printer-name
    
    disable

    取消当前作业,然后禁用打印机。保存当前作业,以便在启用打印机时重新打印。

    -c

    取消当前作业,然后禁用打印机。将来不打印当前作业。

    -W

    在禁用打印机之前一直等待,直到完成当前作业。

    -r "reason"

    为用户提供禁用打印机的原因。只要用户通过使用 lpstat -p 命令检查打印机的状态,就会存储并显示原因。

    printer-name

    指定将停止打印请求的打印的打印机的名称。


    注 –

    无法启用或禁用打印机类。只能启用或禁用单台打印机。


  3. 开始打印打印请求。


    # enable printer-name
    
  4. 验证是否已启用打印机。


    # lpstat -p printer-name
    

示例 8–5 启用或禁用打印机

以下示例说明如何停止打印机 luna 上的当前作业、保存该作业以便将来打印,以及提供打印机停止打印请求的打印的原因。


# disable -r "changing the form" luna

以下示例说明如何在打印机 luna 上开始打印打印请求。


# enable luna
printer "luna" enabled

接受或拒绝打印请求

利用 acceptreject 命令,可以打开或关闭打印队列(其中存储着要打印的请求)。

使用 reject 命令时,将关闭指定打印机的打印队列。新的打印请求无法进入打印服务器上的队列。但是,仍将打印队列中的所有打印请求。如果您希望打印机停止打印队列中已有的请求,则必须禁用该打印机。下表对 acceptrejectenabledisable 命令的功能进行了比较。

表 8–2 acceptrejectenabledisable 打印命令的功能

命令 

功能 

accept

接受发送到打印队列的打印请求。 

disable

停止打印打印队列中当前的请求。 

enable

打印打印队列中的请求。 

reject

拒绝发送到打印队列的打印请求。 

如果拒绝打印请求,则 LP 打印服务会通知或将消息发送给提交该请求的用户。该消息说明指定打印机未接受打印请求。

您还可以通过命令行指定不接受请求的原因。当用户尝试检查打印机队列时,将在用户的系统上显示原因。下图显示打印队列拒绝打印请求时中断处理打印请求的时刻。

图 8–2 打印队列接受或拒绝请求时发生的情况

显示接受和处理打印请求的打印机和拒绝打印请求的打印机(这意味着打印队列阻塞)的图。

Procedure如何接受或拒绝打印机的打印请求

  1. 在打印服务器上以超级用户 lp 或同等角色的身份登录。

  2. 停止接受打印机的打印请求。


    # reject [-r "reason"] printer-name
    
    -r "reason"

    为用户提供打印机拒绝打印请求的原因。只要用户通过使用 lpstat -p 命令检查打印机的状态,就会存储并显示原因。

    printer-name

    指定将停止接受打印请求的打印机的名称。

    只要启用打印机,就会继续打印已排队的请求。有关禁用打印机以便它停止打印的说明,请参见如何启用或禁用打印机

  3. 开始接受打印机的打印请求。


    # accept printer-name
    
  4. 检查打印机的状态,查看它是接受还是拒绝打印请求。


    $ lpstat -p printer-name
    

示例 8–6 接受或拒绝打印机的打印请求

以下示例说明如何阻止打印机 luna 接受打印请求。


# reject -r "luna is down for repairs" luna
destination "luna" will no longer accept requests

以下示例说明如何将打印机 luna 设置为接受打印请求。


# accept luna
destination "luna" now accepting requests

取消打印请求

您可以使用 cancel 命令取消打印机队列中的打印请求或者取消正在打印的作业。

使用 cancel 命令的方式有三种:

使用 cancel 命令时将显示一条消息,指明已取消一个或多个请求,并将打印队列中的下一个请求。

仅在以下情况下,您才能取消打印请求:

要取消特定请求,您需要了解其请求 ID。请求 ID 包含打印机的名称、破折号,以及打印请求编号。例如,luna-185

提交打印请求时,将显示请求 ID。如果您忘记了打印请求 ID,则可以通过将 lpstat 命令与 -o printer 选项一起使用来查找它。

Procedure如何取消打印请求

  1. 如果要取消其他用户的打印请求,则需要成为超级用户 lp 或同等角色。

  2. 确定要取消的打印请求的请求 ID。


    # lpstat 
    

    有关更多详细信息,请参见如何检查打印请求的状态

  3. 取消打印请求。


    # cancel request-id | printer-name
    
    request-id

    指定要取消的打印请求的请求 ID。您可以使用此命令指定多个请求 ID。使用空格或逗号来分隔请求 ID。如果使用空格,请用引号将请求 ID 的列表引起来。

    printer-name

    指定要为其取消当前打印的打印请求的打印机。

    您可以使用此命令指定多个打印机名称。使用空格或逗号来分隔打印机名称。如果您使用空格,请用引号将打印机名称列表引起来。

  4. 验证是否已取消打印请求。


    $ lpstat -o printer-name
    

示例 8–7 取消打印请求

以下示例说明如何取消 luna-3luna-4 打印请求。


$ cancel luna-3 luna-4
request "luna-3" cancelled
request "luna-4" cancelled

以下示例说明如何取消打印机 luna 上当前打印的打印请求。


# cancel luna
request "luna-9" cancelled

Procedure如何取消特定用户的打印请求

  1. 如果要取消其他用户的打印请求,则需要成为超级用户 lp 或同等角色。

  2. 取消特定用户的打印请求。


    $ cancel -u user-list [printer-name]
    -u user-list

    取消指定用户的打印请求。

    user-list 可以是一个或多个用户名。使用空格或逗号来分隔用户名。如果使用空格,请用双引号将名称列表引起来。

    printer-name

    指定要为其取消指定用户的打印请求的打印机。

    printer-name 可以是一个或多个打印机名称。使用空格或逗号来分隔打印机名称。如果您使用空格,请用引号将打印机名称列表引起来。

    如果不指定 printer-name,则会在所有打印机上取消特定用户的打印请求。


示例 8–8 取消特定用户的打印请求

以下示例说明如何在打印机 luna 上取消用户 george 提交的所有打印请求。


# cancel -u george luna
request "luna-23" cancelled

以下示例说明如何在所有打印机上取消用户 george 提交的所有打印请求。


# cancel -u george
request "asteroid-3" cancelled
request "luna-8" cancelled

移动打印请求

如果您计划更改打印机的使用方式,或者决定停用打印机,则应该将 LP 打印服务设置为拒绝其他打印请求。然后,移动或取消当前在打印机中排队的任何请求。您可以使用 lpmove 命令将单个或所有打印请求移动到其他本地打印机。

在您移动打印请求时,不会更改请求 ID,因此用户仍可以找到其请求。如果新指定的打印机无法满足打印请求的要求(如特定的文件内容类型或形式),则不能移动这些打印请求。必须取消这些打印请求。

Procedure如何将打印请求移动到其他打印机

要将所有打印请求从一台打印机移动到其他打印机,您无需知道请求 ID。但是,在移动打印请求之前,请首先确定受影响的打印请求的数量。

  1. 成为超级用户或同等角色。

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

  2. 列出原始打印机上的打印请求的 ID。


    # lpstat -o printer-name1
    
  3. 检查目标打印机是否正在接受打印请求。


    # lpstat -a printer-name2
    

    -a printer-name2 报告打印目标是否正在接受请求。

  4. 将所有打印请求从原始打印机移动到目标打印机。


    # lpmove printer-name1 printer-name2
    
    printer-name1

    指定将从其中移动所有打印请求的打印机的名称。

    printer-name2

    指定将向其移动所有打印请求的打印机的名称。

    有关更多信息,请参见 lpmove(1M) 手册页。

    如果一些请求无法在目标打印机上打印,则将这些请求保留在原始打印机的队列中。通过使用请求 ID,您还可以使用 lpmove 命令将特定的打印请求移动到其他打印机。

  5. 开始接受原始打印机上的打印请求。

    如果您将所有打印请求移动到其他打印机,则 lpmove 命令将自动停止接受该打印机的打印请求。如果要开始接受打印机的新打印请求,则此步骤是必需的。


    # accept printer-name1
    
  6. 检查原始打印机队列中是否存在任何剩余的打印请求。


    # lpstat -o printer-name1
    

    请确保指定的所有打印请求都已移动到目标打印机的队列中。


    # lpstat -o printer-name2
    

示例 8–9 将打印请求移动到其他打印机

以下示例说明如何将打印请求从打印机 luna 移动到打印机 terra。然后,指示原始打印机 luna 恢复接受打印请求。


# lpmove luna terra
# accept luna

更改打印请求的优先级

在用户提交打印请求后,您可以通过执行以下任一操作,更改它在打印服务器队列中的优先级:

Procedure如何更改打印请求的优先级

  1. 成为超级用户或同等角色。

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

  2. 确定要更改其优先级的打印请求的请求 ID。


    # lpstat
    

    有关更多信息,请参见如何检查打印请求的状态

  3. 更改打印请求的优先级。


    # lp -i request-id -H change-priority
    
    -i request-id

    指定要更改的打印请求的请求 ID。

    您可以使用此命令指定多个请求 ID。使用空格或逗号来分隔请求 ID。如果使用空格,请用引号将请求 ID 的列表引起来。

    -H change-priority

    指定更改打印请求优先级的三种方法之一: holdresumeimmediate

    有关 change-priority 的有效值的详细信息,请参见表 8–1

    您还可以使用 lp -q 命令更改指定打印请求的优先级。您可以将优先级从 0(最高优先级)更改为 39(最低优先级)。


示例 8–10 更改打印请求的优先级

以下示例说明如何将请求 ID 为 asteroid-79 的打印请求的优先级更改为优先级 1。


# lp -i asteroid-79 -q 1