在Linux系统中,打印任务通常由CUPS(Common UNIX Printing System)服务管理,这是一个开源的打印系统,广泛用于各类Linux发行版,要暂停打印操作,可能涉及暂停特定打印任务、暂停整个打印机的打印服务,或临时阻止新任务进入队列,以下是详细的操作方法,涵盖命令行和图形界面两种方式,并包含注意事项和常见问题解答。
Linux打印系统基础
CUPS是Linux打印的核心,它通过监听631端口提供打印服务,支持本地和网络打印机,打印任务提交后,会进入打印队列,按顺序处理,暂停打印通常有两种场景:一是暂停队列中的某个任务(如用户误提交了错误文档),二是暂停整个打印机的打印服务(如打印机缺纸、卡纸需要维护),理解这两种场景的差异,有助于选择正确的操作方式。
命令行方法暂停打印
命令行是Linux系统管理的常用方式,尤其适用于服务器环境或无图形界面的系统,以下是常用命令及操作步骤:
查看打印队列状态
在暂停打印前,需先确认打印队列中的任务情况,使用lpstat
命令可以查看打印机的状态和队列中的任务。
-
查看所有打印机的状态:
lpstat -a
输出示例:
HP_LaserJet_Pro_M404n accepting requests since Mon 01 Jan 2024 10:00:00 CST Canon_PIXMA_G3000 accepting requests since Mon 01 Jan 2024 10:05:00 CST
accepting requests”表示打印机正在接受打印任务,“not accepting requests”则表示暂停接受新任务。
-
查看队列中的打印任务:
lpstat -o
输出示例:
HP_LaserJet_Pro_M404n-1 user1 123 待处理 HP_LaserJet_Pro_M404n-2 user2 124 打印中
每个任务包含任务ID(123、124)、用户名和状态(待处理、打印中)。
暂停特定打印任务
如果只想暂停队列中的某个任务(如任务ID为123的任务),使用cancel
命令:
cancel 123
执行后,该任务会被从队列中移除,若任务正在打印,则会立即停止,若需强制停止(即使任务处于打印中),可添加-f
参数:
cancel -f 123
暂停整个打印机的打印服务
若需要暂停打印机接受所有新任务(如打印机维护),可通过修改打印机属性实现,使用lpadmin
命令:
sudo lpadmin -p 打印机名称 -o pause
暂停名为“HP_LaserJet_Pro_M404n”的打印机:
sudo lpadmin -p "HP_LaserJet_Pro_M404n" -o pause
执行后,打印机状态会变为“not accepting requests”,新提交的任务会被拒绝进入队列,但队列中已有的任务仍会继续打印。
恢复打印服务
暂停打印机后,若需恢复打印服务,使用lpadmin
命令取消暂停状态:
sudo lpadmin -p 打印机名称 -o resume
sudo lpadmin -p "HP_LaserJet_Pro_M404n" -o resume
使用cupsctl
控制打印服务
CUPS还提供了cupsctl
命令,用于动态调整打印服务的行为,临时暂停所有打印机的任务处理:
sudo cupsctl --set-device-uri=//no/printer
此命令会将所有打印机的设备URI设置为“//no/printer”,阻止数据发送到打印机,恢复时需重新设置正确的设备URI(可通过lpinfo -v
查看打印机URI):
sudo cupsctl --set-device-uri=usb://HP/LaserJet_Pro_M404n?serial=xxx
图形界面方法暂停打印
对于使用图形界面的Linux用户(如Ubuntu、Linux Mint等),可通过系统设置或打印机管理工具暂停打印,操作更直观。
通过系统设置管理打印机
以GNOME桌面环境(Ubuntu默认)为例:
- 打开“设置”→“打印机”,在列表中选择目标打印机(如“HP_LaserJet_Pro_M404n”)。
- 点击“打印机选项”或“首选项”,找到“打印机状态”或“管理”选项。
- 勾选“暂停打印”或“不接受新任务”,点击“应用”即可暂停打印机。
- 恢复时取消勾选即可。
使用系统打印管理工具
部分发行版(如Fedora、CentOS)提供“打印机配置”工具(system-config-printer):
- 在终端运行
system-config-printer
命令,打开图形界面。 - 选择目标打印机,点击“打印机”菜单→“暂停打印”。
- 恢复时再次点击“暂停打印”取消勾选。
暂停特定任务(图形界面)
在“打印机配置”工具中,切换到“队列”选项卡,可以看到所有打印任务,右键点击需暂停的任务,选择“暂停”或“取消”,即可暂停或移除该任务。
注意事项
-
权限问题:
命令行操作中,lpadmin
和cupsctl
需要管理员权限(sudo
),普通用户只能管理自己提交的任务(如cancel 123
只能取消当前用户的任务123)。 -
打印机状态检查:
暂停打印后,建议通过lpstat -a
确认打印机状态是否变为“not accepting requests”,避免因状态未更新导致操作无效。 -
任务恢复:
使用cancel
命令暂停的任务无法直接恢复,只能重新提交;暂停的打印机可通过lpadmin -p 打印机名称 -o resume
恢复,但队列中的任务会继续处理。 -
网络打印机:
若为网络打印机,需确保CUPS服务允许远程连接(修改/etc/cups/cupsd.conf
中的Listen 631
和Allow @LOCAL
),否则无法远程管理打印任务。
常用命令速查表
命令 | 功能 | 示例 |
---|---|---|
lpstat -a |
查看所有打印机状态 | lpstat -a |
lpstat -o |
查看队列中的打印任务 | lpstat -o |
cancel 任务ID |
取消暂停指定任务 | cancel 123 |
sudo lpadmin -p 打印机名称 -o pause |
暂停整个打印机 | sudo lpadmin -p "HP_LaserJet" -o pause |
sudo lpadmin -p 打印机名称 -o resume |
恢复打印机打印服务 | sudo lpadmin -p "HP_LaserJet" -o resume |
sudo cupsctl --set-device-uri=//no/printer |
动态暂停所有打印机 | sudo cupsctl --set-device-uri=//no/printer |
相关问答FAQs
问题1:使用cancel
命令取消任务时提示“cancel: Bad job ID”,怎么办?
解答:该错误通常是因为任务ID不存在或已处理完成,可通过lpstat -o
查看当前队列中的有效任务ID,确保输入正确的ID,若任务已完成,则无需操作;若任务ID正确但仍报错,可能是CUPS服务异常,尝试重启CUPS服务:sudo systemctl restart cups
。
问题2:暂停打印机后,新提交的任务仍进入队列,是什么原因?
解答:可能是暂停操作未生效,检查打印机状态:lpstat -a | grep "打印机名称"
,若仍显示“accepting requests”,说明暂停命令执行失败,常见原因包括:① 未使用sudo
(lpadmin
需要管理员权限);② 打印机名称输入错误(可通过lpstat -p
查看所有打印机名称);③ CUPS服务异常(重启服务:sudo systemctl restart cups
),重新执行暂停命令并确认状态即可。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/28226.html