58、Linux 打印系统 CUPS 全面指南

Linux 打印系统 CUPS 全面指南

1. CUPS 访问控制配置

在配置 CUPS 时,涉及到一些重要的指令来控制访问权限。以下是相关指令的详细解释:
- Location 指令 :定义了所有 GET 操作的路径起点 / ,这是 Web 服务器的最高级别路径。
- Order 指令 :定义了指定位置的默认访问控制,有两种可能的值:
- deny, allow :默认允许所有主机的请求,然后检查 Deny 指令,接着检查 Allow 指令。
- allow, deny :默认拒绝所有主机的请求,然后检查 Allow 指令,接着检查 Deny 指令。
- Deny 指令 :指定要拒绝访问的主机。例如,使用 all 关键字表示所有主机。
- Allow 指令 :指定允许访问的主机。在示例中,仅允许本地主机( 127.0.0.1 )访问。由于 Order 指令的设置, Deny 指令中指定的值将优先于 Allow 指令。
- Location 指令结束标签 :标志着 Location 指令块的结束。

如果要更改 CUPS 的默认行为,允许从任何主机访问 cupsd.conf 中的 /admin 位置,可以将 Allow 指令从 Allow 127.0.0.1 改为 Allow All ,然后注释掉 Deny All 指令或改为 Deny None

2. 添加打印机

在安装并启动 CUPS 服务后,需要登录到 Web 界面(通过端口 631)来添加打印机。在 Web 浏览器中输入 http://localhost:631 即可访问。默认情况下,必须登录到要管理的同一服务器。需要注意的是,631 端口也是 CUPS 接受打印作业的端口。

如果要从本地服务器以外的位置管理指定的打印机,需要修改 cupsd.conf 文件以允许其他主机连接,特别是要为文件中的 /admin 位置设置适当的访问控制。

3. 本地打印机和远程打印机

在 CUPS 中添加打印机很容易,关键是要知道打印机如何连接到系统。打印机可以通过两种方式连接到主机:本地连接和网络连接。CUPS 使用设备统一资源信息(URI)来指定打印机资源的访问模式,以下是一些可能的设备 URI 示例:
| 连接方式 | URI 示例 | 说明 |
| ---- | ---- | ---- |
| 直接连接(本地) | parallel:/dev/lp* | 连接到并行端口的打印机 |
| 直接连接(本地) | serial:/dev/ttyS* | 连接到串行端口的打印机 |
| 直接连接(本地) | usb:/dev/usb/lp* | 连接到 USB 端口的打印机 |
| IPP(网络) | ipp://hostname/ipp/ | 通过 Internet 打印协议访问的网络打印机 |
| LPD(网络) | lpd://hostname/queue | 连接到运行 Line Printer Daemon(LPD)的系统的打印机 |
| SMB(网络) | smb://servername/sharename | 访问 Windows 网络或 Samba 服务器上共享打印机 |
| 网络打印机 | socket://ip_address:port | 具有内置网络功能的打印机,如 HP JetDirect 系列 |

4. 使用 Web 界面添加打印机

可以通过 Web 界面、命令行或特定发行版的 GUI 工具来添加和配置 CUPS 打印机。Web 界面方法可能是最简单的,因为它使用向导引导整个过程。以下是使用 Web 界面添加打印机的步骤:
1. 登录到运行 CUPS 的系统,启动 Web 浏览器,连接到 http://localhost:631
2. 在网页的顶部导航区域,点击 Administration 菜单,然后在随后的屏幕上点击 Add Printer 按钮。可能会提示进行身份验证,输入 root 作为用户名并输入 root 密码,点击 OK 继续。
3. 会看到一个列出各种可用连接方法的屏幕,自动发现的网络打印机也会列出。选择最能描述打印机与系统连接方式的选项,这里为示例打印机选择 IPP,完整 URI 为 ipp://locahost/631 ,完成后点击 Continue
4. 下一个屏幕会根据上一步选择的连接方法而有所不同,通常可以接受默认设置,点击 Continue
5. 在 Add Printer 页面,输入打印机的信息,如名称、位置等,点击 Continue
6. 下一个屏幕会列出各种打印机品牌和型号,选择最接近要安装的打印机的型号,示例中选择 HP Color Laserjet Series PCL ,点击 Add Printer 按钮继续。
- 提示 :列表中显示的打印机品牌和制造商显然不能涵盖所有存在的打印机品牌。如果需要更多选择,可以在 Fedora 或 RHEL 类型的系统上安装 gutenprint-cups RPM 包,该包为各种打印机制造商提供了额外的驱动程序。在 Debian 类系统(如 Ubuntu)上, printer-driver-gutenprint.deb 包将提供额外的驱动程序。
7. 最后一个屏幕允许为新打印机设置默认选项,如媒体尺寸、输出模式、媒体来源和横幅等。目前接受默认选项,点击 Set Default Options 按钮。
8. 会看到一个页面确认打印机已成功添加。
9. 然后会看到一个显示刚添加打印机属性的页面。

对于自动检测到的打印机(如 USB 或网络打印机),软件会自动生成一个设备 URI 来访问检测到的打印机。

5. 使用命令行工具添加打印机

也可以使用命令行向 CUPS 添加打印机。熟悉 CUPS 工作原理后,通过命令行界面管理 CUPS 系统可能会更快。以下是使用 CUPS 命令行工具设置打印机的简单示例:
1. 以超级用户身份登录系统,启动任意虚拟终端,使用 lpstat 实用工具列出当前配置的打印机队列:

[root@server ~]# lpstat -a
Imagine-printer accepting requests since Sat 24....PST
  1. 使用 lpinfo 命令获取 CUPS 服务器支持的打印机型号和驱动程序列表。对于示例场景,对富士施乐 DocuPrint 系列打印机感兴趣,将命令的长输出通过管道传递给 grep 命令以缩小列表范围:
[root@server ~]# lpinfo  -m  | grep -i fuji
lsb/usr/cupsfilters/Fuji_Xerox-DocuPrint_CM305_df-PDF.ppd Fuji Xerox
….<OUTPUT TRUNCATED>....

选择输出的第一行作为示例打印机的型号和驱动程序,因为它是最接近的通用匹配。CUPS 的 lpadmin 命令允许只指定打印机型号/驱动程序的缩写形式。
3. 现在发出 lpadmin 命令添加打印机:

[root@server ~]# lpadmin -p "Imagine-printer-number-2" -E  \
 -v socket://192.168.1.200 \
 -m  "lsb/usr/cupsfilters/Fuji_Xerox-DocuPrint_CM305_df-PDF.ppd" \
 -D  "You only need to imagine to print here" \
 -L  "Building 3"
  1. 再次使用 lpstat 命令列出所有存在的打印机:
[root@fedora-server ~]# lpstat -a
Imagine-printer accepting requests since Sun 31 ... 8 PM EDT
Imagine-printer-number-2 accepting requests since Sun 31 … 6 PM EDT
  1. 也可以在 CUPS Web 界面上查看刚添加的打印机,将 Web 浏览器指向 http://localhost:631/printers
6. 日常 CUPS 管理

设置打印机只是管理打印环境的一半工作,还需要进行一些日常的打印机管理任务,如删除打印机、管理打印机队列和查看打印作业状态等。可以使用命令行工具和 Web 界面来管理这些任务。

6.1 设置默认打印机

在设置了多个打印队列的系统上,可能希望将某个特定的打印机(队列)设置为客户端使用的默认打印机。默认打印机是客户端在打印时未明确指定打印机名称时使用的打印机。例如,要将名为 Imagine-printer-number-2 的打印机设置为系统的默认打印机,可以输入以下命令:

[root@server ~]# lpadmin -d imagine-printer-number-2
6.2 启用、禁用和删除打印机
  • 禁用打印机 :类似于将打印机临时离线。在此状态下,打印机队列仍可接受打印作业,但不会实际打印它们,打印作业会排队等待,直到打印机启用或重启。例如,要禁用名为 imagine-printer-number-2 的打印机,可以输入以下命令:
[root@server ~]# cupsdisable imagine-printer-number-2
  • 启用打印机 :要启用名为 imagine-printer-number-2 的打印机,可以输入以下命令:
[root@server ~]# cupsenable imagine-printer-number-2
  • 删除打印机 :要从命令行删除名为 bad-printer 的打印机,可以输入以下命令:
[root@server ~]# lpadmin -x bad-printer
6.3 接受和拒绝打印作业

任何由 CUPS 管理的打印机都可以设置为接受或拒绝打印作业。这与打印机的禁用状态不同,拒绝打印作业的打印机将简单地不接受任何打印请求。例如,要使名为 imagine-printer-number-2 的打印机拒绝打印作业,可以输入以下命令:

[root@server ~]# /usr/sbin/reject imagine-printer-number-2

使用 lpstat 命令查看此打印机的状态:

[root@server ~]# lpstat -a imagine-printer-number-2
Imagine-printer-number-2 not accepting requests since Tue 26 Jul 2020
02:16:04 PM EDT -
      Rejecting Jobs

要使该打印机恢复接受打印作业,可以输入以下命令:

[root@server ~]# /usr/sbin/accept imagine-printer-number-2

再次查看打印机的状态:

[root@server ~]# lpstat -a imagine-printer-number-2
Imagine-printer-number-2 accepting requests since Tue 26 Jul 2020
02:16:04 PM EDT
6.4 管理打印权限

在默认情况下,任何由 CUPS 管理的打印机都可以接受用户的打印作业。在大型多用户环境中,可能需要控制哪些用户或组可以访问哪些打印机,以确保安全或出于办公管理原因。CUPS 提供了一种简单的方法来实现这一点,通过使用 lpadmin 实用工具。例如:
- 只允许名为 yyang mmellow 的用户向名为 imagine-printer 的打印机打印,可以输入以下命令:

[root@server ~]# lpadmin -p imagine-printer -u allow:yyang,mmellow
  • 拒绝 yyang mmellow 访问该打印机,可以输入以下命令:
[root@server ~]# lpadmin -p imagine-printer -u deny:yyang,mmellow
  • 移除所有限制,允许所有用户向该打印机打印,可以输入以下命令:
[root@server ~]# lpadmin -p imagine-printer -u allow:all
6.5 通过 Web 界面管理打印机

大多数上述任务也可以通过 CUPS Web 界面执行。使用按钮和链接,可以轻松删除打印机、控制打印作业、修改打印机属性、停止打印机、拒绝打印作业等。例如,作为管理员,可能需要定期检查打印队列以确保一切正常。点击 Web 界面上的 Jobs 选项卡(或直接访问 http://localhost:631/jobs )将显示一个类似于图 28 - 2 的页面,可以对队列中的作业进行各种操作。如果队列中没有作业,网页将明确显示没有作业。 Jobs 页面还提供了显示已完成作业和显示所有作业的选项按钮。还可以通过将浏览器指向 CUPS 的管理页面( http://localhost:631/admin/ )执行许多其他管理任务。

7. 使用客户端打印工具

当客户端机器打印时,作业会发送到打印服务器并进行假脱机处理。假脱机处理就是将打印作业放入打印队列的过程,打印作业可以处于不同的状态,如进行中、暂停(例如管理员为了补充纸盘而暂停打印)或取消(作业因某种原因被手动取消)。当打印机出现问题时,打印作业可能会排队,在打印机恢复正常时可能会产生问题。以下是一些可以用于打印和管理打印队列的命令:

7.1 lpr 命令

lpr 命令用于打印文档。大多数 PostScript 和文本文件可以直接使用 lpr 命令打印。如果使用独立应用程序(如 AbiWord、KOffice、LibreOffice、GIMP、OpenOffice 等),可能需要将这些应用程序设置为打印到正确的设备。以下是一个示例:
1. 以普通用户身份(如 yyang )登录系统,创建一个包含简单文本 “Hello Printer” 的纯文本文件 test-page.txt

[yyang@client ~]$ echo "Hello Printer" >> test-page.txt
  1. 找出系统上配置的默认打印机名称:
[yyang@client ~]$ lpstat -d
system default destination: Imagine-printer
  1. test-page.txt 文件发送到默认打印机:
[yyang@client ~]$ lpr  test-page.txt
  1. 将同一文档发送到之前安装的另一个虚拟打印机 Imagine-printer-number-2
[yyang@client ~]$ lpr -P Imagine-printer-number-2 test-page.txt

输入此命令后,除非打印的是大文件,否则打印机应该很快开始打印。要查看打印作业的状态,可以使用 lpq 命令。

7.2 lpq 命令

提交作业后,可以使用 lpq 命令查看打印假脱机程序上的内容。如果刚打印的作业没有从打印机输出,可以使用 lpq 命令显示打印机上当前排队的作业列表。例如,要查看发送到默认打印机的打印请求的状态,可以输入以下命令:

[yyang@client ~]$ lpq -av

要查看发送到第二个打印机的打印作业的状态,可以输入以下命令:

[yyang@client ~]$ lpq -av  -P Imagine-printer-number-2
7.3 lprm 命令

如果突然意识到不想打印刚刚提交的文档,可能有机会在打印之前删除它。可以使用 lprm 命令将打印作业从打印机假脱机程序中移除。例如:
- 从默认打印机删除 ID 为 2 的打印作业,可以输入以下命令:

[yyang@client ~]$ lprm 2
  • 从特定打印机(如 Imagine-printer-number-2 )移除 ID 为 2 的作业,可以输入以下命令:
[yyang@client ~]$ lprm 2 -P imagine-printer-number-2
  • 如果是 root 用户,可以通过发出以下命令清除名为 imagine-printer 的打印机的所有打印作业:
[root@server ~]# lprm -P imagine-printer -

这里的 - 表示 “所有作业”。

综上所述,通过 Web 界面、命令行工具和客户端打印工具,用户可以全面管理 CUPS 打印系统,包括添加、配置、管理打印机以及处理打印作业等操作。无论是初学者还是有经验的管理员,都可以根据自己的需求选择合适的方法来完成打印任务。

Linux 打印系统 CUPS 全面指南

8. 打印作业状态管理流程

为了更清晰地展示打印作业在不同状态下的管理流程,下面通过 mermaid 流程图进行说明:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;

    A([开始打印作业]):::startend --> B{作业状态}:::decision
    B -->|进行中| C(正常打印):::process
    B -->|暂停| D(管理员暂停,补充纸盘等):::process
    D --> E(恢复打印):::process
    B -->|取消| F(手动取消作业):::process
    C --> G{打印机是否故障}:::decision
    G -->|是| H(作业排队):::process
    H --> I(打印机恢复,继续打印):::process
    G -->|否| J(作业完成):::process

这个流程图展示了打印作业从开始到结束的整个生命周期,以及在不同状态下的处理方式。当打印机出现故障时,打印作业会排队等待,直到打印机恢复正常。

9. 不同连接方式打印机的优缺点分析

在前面介绍了多种打印机的连接方式,下面对它们的优缺点进行详细分析,以帮助用户根据实际需求选择合适的连接方式:
| 连接方式 | 优点 | 缺点 |
| ---- | ---- | ---- |
| 直接连接(本地) | 连接稳定,数据传输速度快,适用于小型办公环境或家庭使用;不需要网络支持,独立性强。 | 打印机与主机之间的距离受限;不利于多用户共享使用。 |
| IPP(网络) | 支持远程打印,方便多用户共享;大多数现代操作系统都支持该协议,兼容性好。 | 依赖网络环境,网络不稳定时可能影响打印质量和速度;需要对网络进行一定的配置和管理。 |
| LPD(网络) | 许多 UNIX/Linux 系统甚至部分 Windows 服务器都支持,通用性较强;可以使不支持 LDP 的主机也能使用连接到 LPD 系统的打印机。 | 安全性相对较低;配置相对复杂,需要对 LPD 服务有一定的了解。 |
| SMB(网络) | 是 Windows 网络文件和打印机共享的基础,在 Windows 环境中使用方便;Linux/UNIX 系统可以通过 Samba 软件支持,实现跨平台共享。 | 依赖 Windows 系统或 Samba 服务器,对服务器的稳定性要求较高;可能存在兼容性问题,特别是在不同版本的 Windows 系统之间。 |
| 网络打印机 | 具有内置网络功能,不需要连接到单独的主机,可以直接连接到网络,方便多用户共享;可以放置在网络覆盖的任何位置,灵活性高。 | 价格相对较高;需要对打印机的网络设置进行配置,对用户的技术要求较高。 |

10. 常见问题及解决方法

在使用 CUPS 打印系统的过程中,可能会遇到一些常见问题,下面对这些问题及解决方法进行总结:
- 打印机无法连接
- 可能原因 :网络连接问题、打印机未开启、CUPS 服务未启动、设备 URI 配置错误等。
- 解决方法 :检查网络连接是否正常,确保打印机已开启并处于就绪状态;使用 systemctl status cups 命令检查 CUPS 服务是否正在运行,如果未运行,使用 systemctl start cups 命令启动服务;检查设备 URI 是否正确配置。
- 打印作业排队但不打印
- 可能原因 :打印机故障、打印队列堵塞、打印机驱动程序问题等。
- 解决方法 :检查打印机是否有卡纸、缺纸等故障,排除硬件问题;使用 lpstat -a 命令查看打印队列状态,使用 lprm 命令清除不必要的打印作业;更新或重新安装打印机驱动程序。
- 打印质量不佳
- 可能原因 :打印机设置问题、打印驱动程序不兼容、打印机耗材不足等。
- 解决方法 :在 CUPS 管理界面或打印机驱动程序设置中调整打印质量选项;尝试更新打印机驱动程序到最新版本;检查打印机的墨盒、硒鼓等耗材是否充足。

11. 总结与建议

通过对 CUPS 打印系统的全面介绍,我们了解了其访问控制配置、打印机添加方法、日常管理任务以及客户端打印工具的使用。在实际应用中,用户可以根据自己的需求和技术水平选择合适的管理方式。
- 对于初学者来说,使用 Web 界面添加和管理打印机是最简单的方法,它提供了直观的操作向导,降低了学习成本。
- 对于有一定技术基础的用户,命令行工具可以更高效地完成复杂的配置和管理任务,如批量添加打印机、设置打印权限等。
- 在选择打印机连接方式时,要综合考虑打印机的使用场景、网络环境和成本等因素。如果是小型办公环境或家庭使用,直接连接(本地)方式可能更合适;如果需要多用户共享和远程打印,网络连接方式则是更好的选择。
- 定期对打印系统进行维护和检查,及时处理打印作业排队、打印机故障等问题,确保打印系统的稳定运行。

希望本文能够帮助用户更好地理解和使用 CUPS 打印系统,提高打印工作的效率和质量。

根据原作 https://pan.quark.cn/s/459657bcfd45 的源码改编 Classic-ML-Methods-Algo 引言 建立这个项目,是为了梳理和总结传统机器学习(Machine Learning)方法(methods)或者算法(algo),和各位同仁相互学习交流. 现在的深度学习本质上来自于传统的神经网络模型,很大程度上是传统机器学习的延续,同时也在不少时候需要结合传统方法来实现. 任何机器学习方法基本的流程结构都是通用的;使用的评价方法也基本通用;使用的一些数学知识也是通用的. 本文在梳理传统机器学习方法算法的同时也会顺便补充这些流程,数学上的知识以供参考. 机器学习 机器学习是人工智能(Artificial Intelligence)的一个分支,也是实现人工智能最重要的手段.区别于传统的基于规则(rule-based)的算法,机器学习可以从数据中获取知识,从而实现规定的任务[Ian Goodfellow and Yoshua Bengio and Aaron Courville的Deep Learning].这些知识可以分为四种: 总结(summarization) 预测(prediction) 估计(estimation) 假想验证(hypothesis testing) 机器学习主要关心的是预测[Varian在Big Data : New Tricks for Econometrics],预测的可以是连续性的输出变量,分类,聚类或者物品之间的有趣关联. 机器学习分类 根据数据配置(setting,是否有标签,可以是连续的也可以是离散的)和任务目标,我们可以将机器学习方法分为四种: 无监督(unsupervised) 训练数据没有给定...
系统采用微信小程序作为前端交互界面,结合Spring Boot与Vue.js框架实现后端服务及管理后台的构建,形成一套完整的电子商务解决方案。该系统架构支持单一商户独立运营,亦兼容多商户入驻的平台模式,具备高度的灵活性与扩展性。 在技术实现上,后端以Java语言为核心,依托Spring Boot框架提供稳定的业务逻辑处理与数据接口服务;管理后台采用Vue.js进行开发,实现了直观高效的操作界面;前端微信小程序则为用户提供了便捷的移动端购物体验。整套系统各模块间紧密协作,功能链路完整闭环,已通过严格测试与优化,符合商业应用的标准要求。 系统设计注重业务场景的全面覆盖,不仅包含商品展示、交易流程、订单处理等核心电商功能,还集成了会员管理、营销工具、数据统计等辅助模块,能够满足不同规模商户的日常运营需求。其多店铺支持机制允许平台方对入驻商户进行统一管理,同时保障各店铺在品牌展示、商品销售及客户服务方面的独立运作空间。 该解决方案强调代码结构的规范性与可维护性,遵循企业级开发标准,确保了系统的长期稳定运行与后续功能迭代的可行性。整体而言,这是一套技术选型成熟、架构清晰、功能完备且可直接投入商用的电商平台系统。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值