Ict-innovation/LPI/108.4
考生应该能够使用 CUPS 和 LPD 兼容性接口来管理打印机队列和用户打印作业。
关键知识领域
- 基本的 CUPS 配置(用于本地和远程打印机)。
- 管理用户打印队列。
- 排除一般打印问题的故障。
- 从配置的打印机队列中添加和删除作业。
CUPS(通用 Unix 打印系统)是 Linux 上的标准打印系统。cups 服务器是 cupsd;它在端口 631 上监听,并使用 IPP(Internet 打印协议)接受打印作业。IPP 建立在 HTTP 之上,这意味着 IPP 请求是具有特定类型内容的 HTTP 请求。
图示 108.4-1:CUPS 打印系统
CUPS 服务器处理打印机队列管理,还提供一个 Web 服务器(也在端口 631 上),它支持基于浏览器的配置界面,允许添加和删除打印机、打印机队列管理等等。
图 108.4-2:CUPS Web 界面:主页
CUPS 过滤器
cups 内部的工作流程可能比较复杂
图 108.4-3:Linux 打印架构
CUPS 的前端是实际的服务器,它处理打印作业的排队并提供基于 Web 的配置界面。除此之外,工作流程的核心是过滤器,它提供从初始输入文件(纯文本、jpeg 图像等)到实际打印机理解的语言的格式转换。这些过滤器基于Ghostscript(一个 GNU 项目)。它们参考 PPD(Postscript 打印机描述)文件,该文件指定了打印机的功能。过滤器位于(例如)/usr/share/ghostscript 中。
Ghostscript 也可以从命令行使用名称 gs 调用。此命令将 Postscript 或 PDF 文件作为输入,并为特定打印机类型生成输出文件。它有一个可以处理的打印机驱动程序数据库(此列表相当最新,例如支持许多 USB 打印机),并将 Postscript 直接转换为这些已知型号的 PCL。运行命令 gs -h 可以查看支持的设备列表
# gs -h GPL Ghostscript 8.71 (2010-02-10) Copyright (C) 2010 Artifex Software, Inc. All rights reserved. Usage: gs [switches] [file1.ps file2.ps ...] Most frequently used switches: (you can use # in place of =) -dNOPAUSE no pause after page | -q `quiet', fewer messages -g<width>x<height> page size in pixels | -r<res> pixels/inch resolution -sDEVICE=<devname> select device | -dBATCH exit after last file -sOutputFile=<file> select output file: - for stdout, |command for pipe, embed %d or %ld for page # Input formats: PostScript PostScriptLevel1 PostScriptLevel2 PostScriptLevel3 PDF Default output device: x11alpha Available devices alc1900 alc2000 alc4000 alc4100 alc8500 alc8600 alc9100 ap3250 appledmp atx23 atx24 atx38 bbox bit bitcmyk bitrgb bitrgbtags bj10e bj10v bj10vh bj200 bjc600 bjc800 bjc880j bjccmyk bjccolor bjcgray bjcmono bmp16 bmp16m bmp256 bmp32b bmpgray bmpmono bmpsep1 bmpsep8 ccr cdeskjet cdj1600 cdj500 ... many lines deleted ... |
CUPS 后端
CUPS 支持多种后端。术语后端指的是用于连接打印机的技术或协议。下表给出了一些示例
后端 | URI 语法 | 示例 |
并行端口 | parallel:/dev/lpx | parallel:/dev/lp0 |
USB | usb://make/model?serial=number | usb://hp/officejet123?serial=108442 |
ipp | ipp://host/printers/queue | ipp://neptune/printers/xerox1 |
LPD | lpd://host/queue | lpd://neptune/xerox1 |
套接字 | socket://host:port | socket://neptune:9100 |
CIFS | smb://user:password@workgroup/host/share |
可以使用基于 Web 的界面添加 CUPS 打印机。下图显示了此序列中的几个屏幕中的两个。
图 108.4-4:添加打印机 - I
图 108.4-5:添加打印机 - II
打印机也可以分配到类别。这主要在连接了多个相同类型打印机的重型打印服务器上有用。用户将打印作业发送到类别;CUPS 将在第一个可用的打印机上打印它们。
CUPS 替换了 UNIX 和 Linux 中使用的两个早期打印系统。一个是来自 System V Unix,另一个来自 BSD(伯克利软件发行版)。这两个系统主要用于从命令行打印纯文本文件(例如,不是从 Open Office 等图形应用程序打印包含嵌入图像的办公文档)。这两个系统虽然在概念上相似,但使用不同的命令、不同的配置文件和不同的协议与打印服务器通信。
为了向后兼容,CUPS 提供了许多这些命令行工具的“类似”版本。这些包括
命令 | 描述 |
lp, lpr | 提交文件以打印 |
lpq | 打印打印机队列状态 |
lprm | 删除排队的打印作业 |
accept | 允许将作业发送到打印队列 |
reject | 阻止将作业发送到打印队列 |
cupsenable | 允许将作业从队列发送到打印机 |
cupsdisable | 停止作业从队列发送到打印机 |
lpstat | 显示 CUPS 打印机队列的状态 |
lpadmin | 配置 cups 打印机和类别 |
使用 CUPS 时,这些命令将作业提交到 CUPS 服务器,CUPS 服务器执行其通常的过滤和后端处理。
lp 和 lpr
lpr 和 lp 实用程序用于将作业提交到打印机。请注意,它们使用不同的命令选项。例如,lpr 使用 -P 标记指定打印机,lp 使用 -d 标记。
lpq
用户可以使用 lpq 监控打印队列的状态。在下面的示例中,demo-1 是打印机的名称。
# lpr -Pdemo-1 anaconda-ks.cfg # lpq -Pdemo-1 demo-1 is not ready Rank Owner Job File(s) Total Size 1st root 4 install.log 39936 bytes 2nd root 5 anaconda-ks.cfg 1024 bytes |
lprm
lprm 命令用于从打印队列中删除作业。在下面的示例中,我们从 demo-1 打印队列中删除作业 4,然后重新显示队列
# lprm -Pdemo-1 4 # lpq -Pdemo-1 demo-1 is not ready Rank Owner Job File(s) Total Size 1st root 5 anaconda-ks.cfg 1024 bytes |
lpstat
lpstat 显示有关当前类别、作业和打印机的状态信息。在没有参数的情况下运行时,lpstat 将列出当前用户排队的作业。
示例
# lpstat -t scheduler is running no system default destination device for demo-1: parallel:/dev/lp0 device for demo-2: ipp://printhost/ipp demo-1 accepting requests since Sun 26 Sep 2010 12:38:10 PM BST demo-2 accepting requests since Sun 26 Sep 2010 12:34:53 PM BST printer demo-1 disabled since Sun 26 Sep 2010 12:38:10 PM BST - Paused printer demo-2 is idle. enabled since Sun 26 Sep 2010 12:34:53 PM BST demo-1-5 root 1024 Sun 26 Sep 2010 12:39:30 PM BST
demo-1-5 root 1024 Sun 26 Sep 2010 12:39:30 PM BST |
cupsenable 和 cupsdisable
这些命令用于启用和禁用指定的打印机队列。cupsdisable 停止从队列中获取作业并发送到打印机。它不会阻止新的作业发送到队列。cupsenable 重新启动队列的服务。
accept 和 reject
这些命令用于启用和禁用指定打印机队列的填充。在下面的示例中,我们使用 reject 禁用 demo-1 队列,然后尝试向它打印文件。然后我们重新启用打印机,并成功将作业发送到队列
# reject demo-1 # lpr -Pdemo-1 scsconfig.log lpr: Destination "demo-1" is not accepting jobs.
# lpr -Pdemo-1 scsconfig.log |
lpadmin
lpadmin 命令对 CUPS 打印机执行各种管理操作。例如,它可以用于设置默认打印机。在下面显示的命令序列中,最初没有设置默认目标。运行 lpadmin 后,我们可以通过使用 lpr 打印到默认打印机,而无需指定打印机名称
# lpr install.log lpr: Error - no default destination available.
# lpr install.log |
lpadmin 也可以用于删除 CUPS 打印机。在下面的示例中,我们首先列出可用的队列,然后使用 lpadmin 删除其中一个,然后再次列出队列
# lpstat -a demo-1 accepting requests since Sun 26 Sep 2010 12:38:10 PM BST demo-2 accepting requests since Sun 26 Sep 2010 12:34:53 PM BST
demo-2 accepting requests since Sun 26 Sep 2010 12:34:53 PM BST |
以下是已使用文件、术语和实用程序的部分列表
- CUPS 配置文件、工具和实用程序
- /etc/cups
- lpd 传统接口 (lpr, lprm, lpq)