UNIX/Linux系统管理技术手册-读书笔记-第十二章
《UNIX/Linux系统管理技术手册-读书笔记-第十二章
打印
1. 打印系统概述
| 概念 | 说明 | 能做什么 |
|---|---|---|
| CUPS(Common UNIX Printing System) | Linux/FreeBSD/macOS默认打印系统,基于HTTP/IPP协议 | 统一的打印服务管理,支持Web界面和命令行 |
| 打印系统组成 | 假脱机程序(spooler)+ 用户工具 + 后端 + 网络协议 | 收集、调度、传输打印作业 |
| CUPS服务器 | 内嵌Web服务器(端口631) | 通过浏览器访问http://printhost:631管理打印 |
| IPP(Internet Printing Protocol) | HTTP增强版协议 | 客户端提交作业/查询状态 |
打印看似琐碎,但用户满意度提升最快的方式之一就是确保打印系统稳定工作。
2. 打印系统界面(命令与GUI)
2.1 CUPS命令速查
提交打印作业:
查看队列状态:
管理作业:
2.2 命令分类(表12.1)
| 来源 | 命令 | 功能 |
|---|---|---|
| CUPS原生 | cupsdisable/cupsenable |
禁用/启用打印机(出口端) |
lpinfo |
显示可用设备或驱动程序 | |
lpoptions |
显示/设置打印机选项和默认值 | |
lppasswd |
管理摘要认证密码 | |
| System V | accept/reject |
接受/拒绝队列提交(入口端) |
lpadmin |
配置打印机 | |
lpmove |
将作业移动到另一队列 | |
cancel |
取消打印作业 | |
| BSD | lpr / lpq / lprm |
提交/查看/取消作业 |
记忆技巧:
accept/reject控制作业提交(入口),cupsenable/cupsdisable控制打印机打印(出口)。
3. 打印队列与多打印机管理
| 概念 | 说明 | 能做什么 |
|---|---|---|
| 打印队列 | 每台打印机有独立队列,CUPS服务器集中管理 | 查看、挂起、取消、调整作业优先级 |
| 默认打印机 | 环境变量$PRINTER或lpoptions -d设置 |
无需每次指定-P参数 |
| 打印机实例 | 同一物理打印机不同配置(如双页/草稿) | 满足不同打印需求,无需多台打印机 |
创建打印机实例:
4. 网络打印机浏览与发现
4.1 自动发现(广播)
CUPS通过BrowseAddress定时广播打印机信息(默认30秒),本地网络主机自动发现可用打印机。
4.2 跨子网打印(BrowsePoll + BrowseRelay)
| 配置项 | 作用 |
|---|---|
BrowsePoll server |
主动轮询远程CUPS服务器的打印机信息 |
BrowseRelay src dest |
将打印信息中继到其他子网 |
跨子网示例(从服务器copeland配置):
BrowsePoll allie # 轮询allie(192.168.1.5)
BrowsePoll jj # 轮询jj(192.168.2.14)
BrowseRelay 127.0.0.1 192.168.3.255 # 中继到192.168.3.0子网
5. CUPS过滤器链
| 概念 | 说明 |
|---|---|
| 过滤器链 | 将提交文档逐步转换为打印机原生格式 |
| mime.types | 定义文件类型识别规则(如%PDF→application/pdf) |
| mime.convs | 定义格式转换规则 + 成本(成本最低的链优先) |
| PPD(PostScript Printer Description) | 打印机能力描述文件,定义支持的MIME类型和最终过滤器 |
示例转换链:PDF → pdftops → PostScript → foomatic-rip → PCL(打印机原生)
查看可用后端:
|
|
6. CUPS服务器配置
6.1 配置文件
| 文件 | 说明 |
|---|---|
/etc/cups/cupsd.conf |
主配置文件(类似Apache格式) |
/etc/cups/ppd/ |
打印机PPD文件 |
/var/log/cups/ |
日志目录(access_log、error_log、page_log) |
修改
cupsd.conf后需重启cupsd:systemctl restart cups。
6.2 设置网络打印服务器
修改访问控制(允许子网访问):
<Location />
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.0.0
</Location>
启用广播:
BrowseAddress 192.168.0.255:631
6.3 添加打印机(命令行)
常用URI格式:
parallel:/dev/lp0— 并口usb://...— USBsocket://192.168.0.12— 网络(AppSocket/HP JetDirect)ipp://server/printers/name— IPP网络打印lpd://server/queue— LPD协议http://server:631/printers/name— HTTP/CUPS
💡
lpinfo -v可列出系统支持的设备URI类型。
6.4 停止/禁用打印机
| 场景 | 命令 | 效果 |
|---|---|---|
| 临时暂停打印(换墨盒) | cupsdisable printer |
已有作业保留,暂停打印 |
| 长时间停机 | reject printer |
拒绝新作业提交,已有作业继续 |
| 恢复打印 | cupsenable printer |
|
| 接受新作业 | accept printer |
|
| 删除打印机 | lpadmin -x printer |
7. 故障排除技巧
7.1 检查清单
| 检查点 | 命令/方法 |
|---|---|
| 守护进程是否运行 | systemctl status cups |
| 物理连接 | lpinfo -v 查看后端是否识别设备 |
| 网络连通性 | telnet printer_host 631 或浏览器访问http://printer:631 |
| CUPS日志 | /var/log/cups/error_log |
| 系统日志 | journalctl -u cups 或 /var/log/syslog |
| 队列状态 | lpstat -t、lpq |
| 过滤器问题 | 检查/usr/lib/cups/filter/目录权限 |
7.2 日志文件(3种)
| 日志 | 内容 |
|---|---|
page_log |
打印的页面数 |
access_log |
类似Apache访问日志(HTTP/IPP请求) |
error_log |
错误和调试信息(级别由cupsd.conf控制) |
7.3 直接测试后端
7.4 重启cupsd
8. 本章核心命令速查表
| 命令 | 功能 |
|---|---|
lpr file |
提交打印作业 |
lpq |
查看打印队列 |
lprm job_id |
取消打印作业 |
lpstat -t |
打印服务器完整状态 |
lpstat -p |
查看所有打印机状态 |
lpoptions -d printer |
设置默认打印机 |
lpoptions -l |
列出当前打印选项 |
lpadmin -p printer -E -v uri -m ppd |
添加打印机 |
lpadmin -x printer |
删除打印机 |
cupsenable/cupsdisable printer |
启用/禁用打印机(出口) |
accept/reject printer |
接受/拒绝作业提交(入口) |
lpinfo -v |
列出可用设备和URI类型 |
lpmove job_id destination |
将作业移到另一队列 |
文章作者 会写代码的小郎中
上次更新 2011-06-22
许可协议 CC BY-NC-ND 4.0