CUPS(全称 Common UNIX Printing System)是一个开源的 跨平台打印管理系统,最初为类Unix系统设计,现已成为Linux、macOS等操作系统的默认打印服务。
CUPS功能介绍
- 统一打印管理:提供标准的打印接口,支持本地打印机、网络打印机(如IP打印机、AirPrint)以及云打印服务。
- 驱动程序支持:内置大量打印机驱动程序(通过PPD文件定义),支持主流的打印机品牌(HP、Epson、Canon等)。
- 协议兼容性:支持 IPP(Internet Printing Protocol)、LPD(Line Printer Daemon)、SMB/CIFS(Windows共享打印)等协议。
- 格式转换:自动将文档转换为打印机支持的格式(如PDF转PostScript),通过“过滤器”机制实现。
CUPS工作流程
1.接收打印请求
用户通过命令行(如 lp
、lpr
)或应用程序(如 LibreOffice)提交打印任务。
CUPS 调度器(cupsd
守护进程)接收请求,并生成一个打印作业(Job)。
2.任务队列管理
- 调度器将任务放入队列,根据优先级和打印机状态决定何时处理。
- 用户可通过
lpstat
查看队列状态,或通过cancel
终止任务。
3.格式转换(过滤链)
CUPS 使用一系列 过滤器(Filters) 将文件转换为打印机支持的格式。
- 例如:用户打印一个 PDF 文件,但打印机只支持 PostScript。CUPS 会调用
pdftops
过滤器将 PDF 转为 PostScript。 - 转换过程可能涉及多级处理(如文本→PDF→PostScript→打印机语言)。
4.后端传输
负责将处理后的数据发送到物理打印机。
- 本地打印机:通过 USB、并口等后端(如
usb://
、parallel://
)。 - 网络打印机:通过 IPP、LPD、Socket 等协议(如
ipp://
、http://
)。 - 共享打印机:通过 SMB/CIFS(Windows 共享)或 AirPrint。
5.状态反馈与日志
- CUPS 记录任务状态(完成/失败)到日志(
/var/log/cups/error_log
)。 - 用户和管理员可通过日志排查问题(如驱动错误、连接超时)。
本地打印机与网络打印机
本地打印机 | 网络打印机 | |
---|---|---|
连接方式 | 直接通过物理接口连接(如USB、并口) | 通过网络连接(Wi-Fi、以太网、IP地址)或共享打印服务器 |
配置步骤 | 1. 连接物理接口 | |
2. 安装驱动 | ||
3. CUPS自动检测 | 1. 获取打印机IP或网络路径 | |
2. 手动添加至CUPS | ||
3. 选择协议(IPP/LPD等) | ||
使用场景 | 单台计算机专用 | 多台设备共享(局域网内电脑、手机、平板等) |
依赖条件 | 计算机必须与打印机直连 | 打印机和计算机需在同一网络,或支持远程协议 |
传输协议 | 无(直接硬件通信) | IPP、LPD、Socket、SMB/CIFS(Windows共享)、AirPrint |
优点 | - 即插即用- 延迟低 |
- 无需网络依赖 | - 多设备共享
- 灵活部署位置- 支持远程打印 |
| 缺点 | - 仅限单机使用 - 无法远程访问 | - 依赖网络稳定性
- 配置较复杂
- 可能有延迟 |
| 典型示例 | 家用打印机通过USB连接个人电脑 | 办公室打印机通过IP地址供全员使用 |
打印协议
IPP 是当前最先进、通用的打印协议,适合现代网络环境,LPD/Socket/SMB 主要用于兼容旧设备或特定场景。
协议 | 工作原理 | 优点 | 缺点 | 适用场景 |
---|---|---|---|---|
IPP (Internet Printing Protocol) | - 基于 HTTP(支持 HTTPS) |
- 支持加密、认证
- 可传输打印作业元数据(如纸张类型、颜色模式) | - 跨平台(Linux/Windows/macOS)
- 支持双向通信(反馈打印状态)
- 安全性高 | - 配置依赖打印机支持 IPP
- 旧设备可能不兼容 | 现代网络打印机、云打印 |
| LPD (Line Printer Daemon) | - 基于 TCP/IP 的简单协议 - 无加密,明文传输数据 | - 广泛兼容老旧设备
- 轻量级 | - 安全性差
- 不支持复杂打印设置 | 传统打印机(直连)、Unix/Linux系统 |
| Socket (Raw TCP/IP) | - 直接通过 TCP 端口(如9100)发送原始打印数据 | - 速度快- 无需复杂协议解析 | - 无状态管理- 易受网络干扰 | 工业打印机、专用设备 |
| SMB/CIFS (Windows共享打印) | - 通过 Windows 文件共享协议传输打印任务 | - 无缝集成 Windows 环境 - 支持权限控制 | - 依赖 Windows 系统- 跨平台兼容性差 | Windows 局域网共享打印 |
| AirPrint | - 基于 IPP 的扩展协议 - 专为 Apple 设备优化 | - 苹果设备即插即用
- 无需驱动 | - 仅限 Apple 生态
- 功能受限 | iOS/macOS 设备无线打印 |
管理打印机
发现、添加打印机
1 | # 安装cups,avahi等多个软件包,提供命令行工具 |
发送打印请求
1 | # 使用命令行工具lp进行打印 |
维护打印机
1 | # 关闭打印机 |