Linux命令-reject(拒绝打印任务)
📅 2026/7/5 23:18:45
👁️ 阅读次数
📝 编程学习
Linux命令-reject(拒绝打印任务)
- 命令语法
- 常用选项
- 场景化实例
- 1. 拒绝指定打印机
- 2. 带原因说明拒绝
- 3. 批量拒绝多个打印机
- 4. 打印机故障自动处理
- 5. 恢复打印机接受任务
- 6. 通过 CUPS Web 接口管理
- 7. 配合系统监控脚本
- 查询打印队列状态
- 最佳实践
快速参考:reject命令用于禁止向指定的打印队列提交新任务,通常在打印机维护、故障排除或资源限制时使用。配合accept命令可恢复打印队列接收任务。
提示:
reject只阻止新任务进入队列,不影响已在队列中等待或正在打印的任务。要清空现有队列,使用lprm或cancel。
命令语法
reject[选项]打印队列名...常用选项
| 选项 | 说明 |
|---|---|
-r "原因" | 指定拒绝原因,用户执行 lp 时会看到 |
-h 主机名 | 指定远程打印服务器主机名 |
场景化实例
1. 拒绝指定打印机
# 拒绝 laserjet 打印机新任务sudoreject laserjet# 验证状态lpstat-a# 输出示例:# laserjet not accepting requests since 一 6月 14 10:30:00 2026 -2. 带原因说明拒绝
# 拒绝并告知用户原因sudoreject-r"硒鼓更换中,预计30分钟后恢复"HP_LaserJet# 用户尝试打印时看到# lp -d HP_LaserJet document.pdf# lp: HP_LaserJet: 硒鼓更换中,预计30分钟后恢复3. 批量拒绝多个打印机
#!/bin/bash# 维护时批量拒绝所有打印机PRINTERS=("Office_Floor1""Office_Floor2""Meeting_Room""Lobby")forprinterin"${PRINTERS[@]}";dosudoreject-r"定期维护中,14:00恢复""$printer"echo"已拒绝:$printer"donelpstat-a4. 打印机故障自动处理
#!/bin/bash# 监控打印机状态,故障时自动拒绝check_printer(){localprinter="$1"# 检查打印机是否在线if!lpstat-p"$printer"|grep-q"enabled";thenecho"[ERROR]$printer故障,自动拒绝新任务"sudoreject-r"设备故障,请联系 IT 部门""$printer"return1fi# 检查纸盘状态lpstat-p"$printer"|grep-q"paper"||{sudoreject-r"缺纸,请补充纸张""$printer"return1}return0}check_printer"Main_LaserJet"5. 恢复打印机接受任务
# 恢复接受任务sudoaccept laserjet# 确认恢复lpstat-a# 定时恢复脚本#!/bin/bash# 拒绝2小时,自动恢复sudoreject-r"午休时间暂停服务""Office_Printer"echo"Office_Printer 已暂停,2小时后自动恢复"# 后台定时恢复(sleep7200&&sudoaccept"Office_Printer"&&\echo"Office_Printer 已恢复服务")&6. 通过 CUPS Web 接口管理
# CUPS 管理中同样操作# 停止接收: cupsreject printer_namesudocupsreject"Office_Printer"# 恢复接收: cupsaccept printer_namesudocupsaccept"Office_Printer"# 查看所有打印机状态lpstat-p-d# CUPS 命令行完整管理sudocupsctl --remote-any# 允许远程管理sudosystemctl restart cups# 重启 CUBS 服务7. 配合系统监控脚本
#!/bin/bash# 打印队列监控与自动管理QUEUE="Main_Printer"MAX_JOBS=50REJECT_REASON="打印队列过长,请稍后再试"whiletrue;dojob_count=$(lpstat-o"$QUEUE"2>/dev/null|wc-l)if["$job_count"-ge"$MAX_JOBS"];thenecho"[$(date)] 队列过长($job_count),拒绝新任务"sudoreject-r"$REJECT_REASON""$QUEUE"elif["$job_count"-lt$((MAX_JOBS/2))];thenlpstat-a"$QUEUE"|grep-q"not accepting"&&{echo"[$(date)] 队列恢复($job_count),重新接收任务"sudoaccept"$QUEUE"}fiecho"当前队列长度:$job_count"sleep60done查询打印队列状态
# 查看所有打印机状态lpstat-a# 查看特定打印机lpstat-alaserjet# 查看详细状态lpstat-t# 查看队列中的任务lpstat-o# 查看打印机配置lpoptions-plaserjet-l最佳实践
维护前用
reject -r "详细原因"告知用户,维护完成后用accept恢复。在自动化脚本中结合lpstat检测队列状态动态管理。
# 维护流程模板#!/bin/bashPRINTER="$1"sudoreject-r"计划维护 -$(date'+%H:%M')开始""$PRINTER"echo"$PRINTER已暂停接收,开始维护..."# 维护操作...sudoaccept"$PRINTER"echo"$PRINTER已恢复服务"
编程学习
技术分享
实战经验