Linux命令-reject(拒绝打印任务)

📅 2026/7/5 23:18:45 👁️ 阅读次数 📝 编程学习
Linux命令-reject(拒绝打印任务)

Linux命令-reject(拒绝打印任务)

    • 命令语法
    • 常用选项
    • 场景化实例
      • 1. 拒绝指定打印机
      • 2. 带原因说明拒绝
      • 3. 批量拒绝多个打印机
      • 4. 打印机故障自动处理
      • 5. 恢复打印机接受任务
      • 6. 通过 CUPS Web 接口管理
      • 7. 配合系统监控脚本
    • 查询打印队列状态
    • 最佳实践

快速参考reject命令用于禁止向指定的打印队列提交新任务,通常在打印机维护、故障排除或资源限制时使用。配合accept命令可恢复打印队列接收任务。

提示reject只阻止新任务进入队列,不影响已在队列中等待或正在打印的任务。要清空现有队列,使用lprmcancel

命令语法

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-a

4. 打印机故障自动处理

#!/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已恢复服务"