当用户从打印客户机提交打印请求时,打印请求将先添加到打印服务器上的队列中,然后发送到打印机。当打印请求在队列中时,您可以从客户机系统取消该打印请求或获取有关它的状态信息。您必须登录到打印服务器,才能使用 LP 打印服务命令移动、挂起、恢复打印请求或更改打印请求的优先级。这些操作有助于保持打印服务顺利进行。
下表列出了用于通过 lp -H 命令更改打印请求优先级的值。
表 8–1 用于更改打印请求优先级的值
-H change-priority 的值 |
说明 |
---|---|
hold |
将打印请求挂起,直到您取消该请求或指示 LP 打印服务恢复打印该请求。 |
resume |
将已挂起的打印请求放回队列。该请求将根据其优先级和在队列中的位置进行打印。如果挂起已经在打印的打印作业,则 resume 会将打印请求放在队列开头,以便它成为打印的下一个请求。 |
immediate |
将打印请求放在队列开头。如果请求已经在打印,则您可以挂起该请求,以允许立即打印下一个请求。 |
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
检查打印机和打印请求的状态。
此处仅显示最常用的选项。有关其他有效选项,请参见 lpstat(1) 手册页。
$ lpstat -o [list] | -u [user-list] |
显示特定打印机上打印请求的状态。list 可以是一个或多个打印机名称、打印机类名或打印请求 ID。
要为 list 指定多个打印机名称、类名和 ID,请使用空格或逗号分隔各值。如果使用空格,请用引号将值列表引起来。
如果不指定 list,则将显示发送到所有打印机的打印请求的状态。
显示特定用户的打印请求的状态。user-list 可以是一个或多个用户名。
要使用此命令指定多个用户,请使用空格或逗号分隔用户名。如果使用空格,请用引号将名称列表引起来。
如果不指定 user-list,则将显示所有用户的打印请求的状态。
使用 lpstat 命令检查打印请求的状态时,该命令会为每个打印请求显示一行。
该行从左至右显示以下信息:
请求 ID
用户
输出大小(字节)
请求的日期和时间,
有关请求的信息,如“正在过滤”
以下示例说明用户 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 |
enable 和 disable 命令控制打印机打印还是停止打印打印队列中的请求。当您禁用打印机时,打印机将停止打印队列中的请求。但是,请求仍被添加到队列中。若不希望将请求添加到队列中,则必须将打印机设置为拒绝打印请求。有关拒绝打印请求的信息,请参见接受或拒绝打印请求。
使用 Solaris Print Manager 添加打印机后,将启用该打印机以执行打印任务并接受打印请求。Solaris Print Manager 不提供任何其他有关打印机处理的管理功能。
只要打印机被禁用(打印机出现故障时可能会出现此情况),您就必须启用打印机。启用打印机时,它将打印来自打印队列的请求,直到队列为空,即使打印服务拒绝打印队列中的其他请求时也是如此。
下图显示在禁用打印机时中断处理打印请求的时刻。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
# disable [-c | -W] [-r "reason"] printer-name |
取消当前作业,然后禁用打印机。将来不打印当前作业。
在禁用打印机之前一直等待,直到完成当前作业。
为用户提供禁用打印机的原因。只要用户通过使用 lpstat -p 命令检查打印机的状态,就会存储并显示原因。
指定将停止打印请求的打印的打印机的名称。
# enable printer-name |
验证是否已启用打印机。
# lpstat -p printer-name |
以下示例说明如何停止打印机 luna 上的当前作业、保存该作业以便将来打印,以及提供打印机停止打印请求的打印的原因。
# disable -r "changing the form" luna |
以下示例说明如何在打印机 luna 上开始打印打印请求。
# enable luna printer "luna" enabled |
利用 accept 和 reject 命令,可以打开或关闭打印队列(其中存储着要打印的请求)。
使用 reject 命令时,将关闭指定打印机的打印队列。新的打印请求无法进入打印服务器上的队列。但是,仍将打印队列中的所有打印请求。如果您希望打印机停止打印队列中已有的请求,则必须禁用该打印机。下表对 accept、reject、enable 和 disable 命令的功能进行了比较。
表 8–2 accept、reject、enable 和 disable 打印命令的功能
命令 |
功能 |
---|---|
accept |
接受发送到打印队列的打印请求。 |
disable |
停止打印打印队列中当前的请求。 |
enable |
打印打印队列中的请求。 |
reject |
拒绝发送到打印队列的打印请求。 |
如果拒绝打印请求,则 LP 打印服务会通知或将消息发送给提交该请求的用户。该消息说明指定打印机未接受打印请求。
您还可以通过命令行指定不接受请求的原因。当用户尝试检查打印机队列时,将在用户的系统上显示原因。下图显示打印队列拒绝打印请求时中断处理打印请求的时刻。
停止接受打印机的打印请求。
# reject [-r "reason"] printer-name |
为用户提供打印机拒绝打印请求的原因。只要用户通过使用 lpstat -p 命令检查打印机的状态,就会存储并显示原因。
指定将停止接受打印请求的打印机的名称。
只要启用打印机,就会继续打印已排队的请求。有关禁用打印机以便它停止打印的说明,请参见如何启用或禁用打印机。
开始接受打印机的打印请求。
# accept printer-name |
检查打印机的状态,查看它是接受还是拒绝打印请求。
$ lpstat -p printer-name |
以下示例说明如何阻止打印机 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 命令时将显示一条消息,指明已取消一个或多个请求,并将打印队列中的下一个请求。
仅在以下情况下,您才能取消打印请求:
您是提交请求的用户,并且已登录到通过其提交请求的系统。
您是在任何客户机系统上提交请求的用户,而且打印服务器在其 /etc/printers.conf 文件中为打印机配置了 "user-equivalence" 选项。
您已在打印服务器上以超级用户 lp 或同等角色的身份登录。
要取消特定请求,您需要了解其请求 ID。请求 ID 包含打印机的名称、破折号,以及打印请求编号。例如,luna-185。
提交打印请求时,将显示请求 ID。如果您忘记了打印请求 ID,则可以通过将 lpstat 命令与 -o printer 选项一起使用来查找它。
确定要取消的打印请求的请求 ID。
# lpstat |
有关更多详细信息,请参见如何检查打印请求的状态。
取消打印请求。
# cancel request-id | printer-name |
验证是否已取消打印请求。
$ lpstat -o printer-name |
以下示例说明如何取消 luna-3 和 luna-4 打印请求。
$ cancel luna-3 luna-4 request "luna-3" cancelled request "luna-4" cancelled |
以下示例说明如何取消打印机 luna 上当前打印的打印请求。
# cancel luna request "luna-9" cancelled |
以下示例说明如何在打印机 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,因此用户仍可以找到其请求。如果新指定的打印机无法满足打印请求的要求(如特定的文件内容类型或形式),则不能移动这些打印请求。必须取消这些打印请求。
要将所有打印请求从一台打印机移动到其他打印机,您无需知道请求 ID。但是,在移动打印请求之前,请首先确定受影响的打印请求的数量。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
# lpstat -o printer-name1 |
检查目标打印机是否正在接受打印请求。
# lpstat -a printer-name2 |
-a printer-name2 报告打印目标是否正在接受请求。
将所有打印请求从原始打印机移动到目标打印机。
# lpmove printer-name1 printer-name2 |
指定将从其中移动所有打印请求的打印机的名称。
指定将向其移动所有打印请求的打印机的名称。
有关更多信息,请参见 lpmove(1M) 手册页。
如果一些请求无法在目标打印机上打印,则将这些请求保留在原始打印机的队列中。通过使用请求 ID,您还可以使用 lpmove 命令将特定的打印请求移动到其他打印机。
开始接受原始打印机上的打印请求。
如果您将所有打印请求移动到其他打印机,则 lpmove 命令将自动停止接受该打印机的打印请求。如果要开始接受打印机的新打印请求,则此步骤是必需的。
# accept printer-name1 |
检查原始打印机队列中是否存在任何剩余的打印请求。
# lpstat -o printer-name1 |
请确保指定的所有打印请求都已移动到目标打印机的队列中。
# lpstat -o printer-name2 |
以下示例说明如何将打印请求从打印机 luna 移动到打印机 terra。然后,指示原始打印机 luna 恢复接受打印请求。
# lpmove luna terra # accept luna |
在用户提交打印请求后,您可以通过执行以下任一操作,更改它在打印服务器队列中的优先级:
如果任何打印请求尚未完成打印,则可将其挂起。如果正在打印某一请求,则挂起该请求会将其停止并阻止对其进行打印,直到您继续打印该请求为止。其他打印请求将移动到挂起的请求之前。
将任何打印请求移到队列开头,以使其成为符合打印条件的下一个打印作业。如果希望一个作业立即开始打印,则可以通过挂起当前正打印的作业来将其中断。
更改仍等待打印的作业的优先级,或者在队列中移动作业。这样做会将作业移动到优先级较低的请求之前,优先级相同或较高的其他请求之后。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
确定要更改其优先级的打印请求的请求 ID。
# lpstat |
有关更多信息,请参见如何检查打印请求的状态。
更改打印请求的优先级。
# lp -i request-id -H change-priority |
您可以使用此命令指定多个请求 ID。使用空格或逗号来分隔请求 ID。如果使用空格,请用引号将请求 ID 的列表引起来。
指定更改打印请求优先级的三种方法之一: hold、resume、immediate。
有关 change-priority 的有效值的详细信息,请参见表 8–1。
您还可以使用 lp -q 命令更改指定打印请求的优先级。您可以将优先级从 0(最高优先级)更改为 39(最低优先级)。
以下示例说明如何将请求 ID 为 asteroid-79 的打印请求的优先级更改为优先级 1。
# lp -i asteroid-79 -q 1 |