本章包括其他打印任务,系统管理员可能需要使用 LP 打印服务命令在每日、每周或不定期执行这些任务。
有关概述信息,请参见第 1 章。
任务 |
说明 |
参考 |
---|---|---|
检查打印机的状态。 |
使用 lpstat 命令可以检查所有打印机或特定打印机的状态。使用此命令可以确定哪些打印机可用,并可以检查这些打印机的特征。 | |
停止打印调度程序。 |
如果打印调度程序停止接受打印请求,则您可能需要先停止再重新启动打印调度程序。 | |
重新启动打印调度程序。 |
停止打印调度程序后,您将需要重新启动打印调度程序,以便打印机可以开始接受请求。 | |
使用选项启动打印调度程序。 |
借助 Solaris 管理工具 (Solaris Management Facility, SMF) 将选项传递给打印调度程序有两种方法。您可以设置用于调用期间的选项,也可以设置系统引导后保留的选项。 |
许多日常的打印机管理任务都需要有关 LP 打印服务或特定打印机的状态信息。例如,您可以确定哪些打印机可用。您还可以检查这些打印机的特征。您可以使用 lpstat 命令查找有关 LP 打印服务或特定打印机的状态信息。
如果使用了 PPD 文件创建或修改打印队列,则在 lpstat 输出中将列出特定的 PPD 文件。如果在创建打印队列时未指定 PPD 文件,则 lpstat 输出中的 PPD 项是 none。
登录到网络上的任何系统。
检查打印机的状态。
此处仅显示最常用的选项。有关其他选项,请参见 lpstat(1) 手册页。
$ lpstat [-d] [-p] printer-name [-D] [-l] [-t] |
显示系统的缺省打印机。
显示打印机处于活动状态还是空闲状态、启用或禁用打印机的时间以及打印机是否正在接受打印请求。
您可以使用此命令指定多个打印机名称。使用空格或逗号来分隔打印机名称。如果您使用空格,请用引号将打印机名称列表引起来。如果不指定 printer-name,则会显示所有打印机的状态。
显示指定 printer-name 的说明。
显示指定 printer-name 的特征。
显示有关 LP 打印服务的状态信息,包括所有打印机的状态,如它们是否处于活动状态以及是否正在接受打印请求。
以下示例说明如何显示系统的缺省打印机。
$ lpstat -d system default destination: luna |
以下示例说明如何显示打印机 luna 的状态。
$ lpstat -p luna printer luna is idle. enabled since Jul 12 11:17 2001. available. |
以下示例说明如何显示打印机 asteroid 和 luna 的说明。
$ lpstat -p "asteroid luna" -D printer asteroid faulted. enabled since Jan 5 11:35 2004. available. unable to print: paper misfeed jam Description: Printer by break room printer luna is idle. enabled since Jan 5 11:36 2004. available. Description: Printer by server room. |
以下示例说明如何显示打印机 luna 的特征。
$ lpstat -p luna -l printer luna is idle. enabled since Thu Jul 12 15:02:32 PM PDT Form mounted: Content types: postscript Printer types: PS Description: Connection: direct Interface: /usr/lib/lp/model/standard PPD: none After fault: continue Users allowed: (all) Forms allowed: (none) Banner not required Character sets: (none) Default pitch: Default page size: 80 wide 66 long Default port settings: |
打印调度程序 lpsched 处理打印服务器上的打印请求。但是,打印调度程序有时可能会在系统上停止运行,从而停止接受或打印打印请求。将本地打印机添加到系统时,lpadmin 命令自动启用 lpsched 服务;删除最后一台本地打印机时,该命令将禁用此服务。以下过程描述如何停止和重新启动打印调度程序。如果打印调度程序停止运行时正在对打印请求进行打印,则重新启动打印调度程序时将完整打印该打印请求。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
确定打印调度程序是否正在运行。
# svcs application/print/server |
您还可以使用 lpstat -r 命令确定打印调度程序是否正在运行。
如果打印调度程序未运行,则显示消息 scheduler is not running。
如果打印调度程序正在运行,请将其停止。
# svcadm disable application/print/server |
您还可以使用 lpshut 命令停止打印调度程序。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
确定打印调度程序是否正在运行。
# svcs application/print/server |
您还可以使用 lpstat -r 命令确定打印调度程序是否正在运行。
如果打印调度程序未运行,则显示消息 scheduler is not running。
如果打印调度程序未运行,请将其启动。
# svcadm enable application/print/server |
您还可以使用 /usr/lib/lpsched 命令启动打印调度程序。有关使用 /usr/lib/lpsched 命令与使用 svcadm enable application/print/server 命令启动打印调度程序之间差异的更多信息,请参见使用选项启动打印调度程序。
借助 SMF 将选项传递给打印调度程序有两种方法:
修改仅用于调用期间的选项值。
当您仅希望在调用期间将选项传递给打印调度程序时,请将 /usr/lib/lpsched 命令与相应选项一起使用。在设置选项之前,请参见 lpsched(1M) 手册页,以了解有关这些缺省值和对其进行更改的原因的更多信息。
在系统重新引导过程中或者重新启动打印调度程序时维护选项值。
打印服务器的 SMF 清单包含打印服务器启动脚本所用的属性。这些属性值传递给打印调度程序,并用来表示通过使用 svccfg 命令设置的选项。
这些属性如下所示:
lpsched/num_filters
lpsched/num_notifiers
lpsched/fd_limit
lpsched/reserved_fds
未使用 svccfg 命令设置的任何选项都将使用打印调度程序中的缺省值。有关使用 svccfg 命令的更多信息,请参见 svccfg(1M) 手册页。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
设置选项值。
# /usr/lib/lpsched option value |
指定可以在打印服务器上运行的并发慢速过滤器数。
指定可以在打印服务器上运行的并发通知进程数。
指定 lpsched 进程的文件描述符资源限制。
指定调度程序为重负载下的内部通信保留的文件描述符数。
此示例说明如何将过滤器数设置为 2。其余选项将使用打印调度程序中的缺省值。
# /usr/lib/lpsched -f 2 |
要使用打印调度程序中的缺省选项,请运行不带任何选项的 /usr/lib/lpsched 命令。
请注意,使用 /usr/lib/lpsched 命令启动打印调度程序时,不会使用通过 svccfg 命令设置的值。
成为超级用户 lp 或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
设置一个或所有选项。
# svccfg svc:> select svc:/application/print/server svc:/application/print/server> setprop property = value . . . svc:/application/print/server> quit |
对于要设置的每个选项,请在单独的行上重复 setprop property = value 命令。
通过显示打印服务器属性的当前值,验证是否已正确设置了选项。
# svcprop svc:/application/print/server |
重新启动打印调度程序。
如果打印调度程序未运行,请使用以下命令:
# svcadm refresh svc:/application/print/server # svcadm enable svc:/application/print/server |
如果打印调度程序正在运行,请使用以下命令:
# svcadm refresh svc:/application/print/server # svcadm restart svc:/application/print/server |
要确定打印调度程序是否正在运行,请运行 svcs application/print/server 命令。
此示例说明如何将过滤器数设置为 1。在系统重新引导过程中或者重新启动打印调度程序时,此选项将保留其设置。
# svccfg svc:> select svc:/application/print/server svc:/application/print/server> setprop lpsched/num_filters = count: 1 svc:/application/print/server> quit |
此示例说明如何设置所有选项。
# svccfg svc:> select svc:/application/print/server svc:/application/print/server> setprop lpsched/num_filters = count: 1 svc:/application/print/server> setprop lpsched/num_notifiers = count: 1 svc:/application/print/server> setprop lpsched/fd_limit = count: 4096 svc:/application/print/server> setprop lpsched/reserved_fds = count: 2 svc:/application/print/server> quit |
以下是设置所有选项的样例脚本。
#!/bin/ksh svccfg <<-EOF select svc:/application/print/server setprop lpsched/num_filters = count: 1 setprop lpsched/num_notifiers = count: 1 setprop lpsched/fd_limit = count: 4096 setprop lpsched/reserved_fds = count: 2 EOF |
当用户从打印客户机提交打印请求时,打印请求将先添加到打印服务器上的队列中,然后发送到打印机。当打印请求在队列中时,您可以从客户机系统取消该打印请求或获取有关它的状态信息。您必须登录到打印服务器,才能使用 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 |