麒麟os默认cups打印机连接失败仅重试1次,需修改timeout、maxretries和retryinterval参数提升容错;全局修改影响所有任务,ppd注入可单独适配老旧机型;配置重载后生效,已卡住任务需手动重提。

麒麟OS打印机连接超时后默认仅尝试1次重发,导致网络波动或打印机短暂离线时打印任务直接失败,需手动调整CUPS底层重试参数才能提升容错能力。
修改CUPS全局连接超时与重试次数
该操作影响所有通过CUPS提交的打印任务,适用于局域网内存在信号干扰、交换机延迟或打印机固件响应慢的环境。修改后无需重启服务即可逐步生效,但已卡住的任务需手动取消重提。
第一步:编辑CUPS主配置文件
sudo vim /etc/cups/cupsd.conf
第二步:在Listen或Location段之后添加以下三行(位置任意,但必须在<location></location>之外):
TimeOut 60
MaxRetries 3
RetryInterval 5
【MaxRetries 3 表示连接失败后最多重试3次,而非仅1次】;TimeOut是单次请求等待上限(秒),RetryInterval是每次重试前的等待间隔(秒)。若原配置中已有同类参数,直接覆盖修改即可。
第三步:保存退出后,执行命令重载配置:
sudo systemctl reload cups
为特定打印机单独设置超时策略
当某台老旧打印机(如HP LaserJet P1108、奔图M7100DN)响应极不稳定,而其他设备运行正常时,应避免全局修改,改用PPD文件注入方式定制其行为。
方法一:定位对应PPD文件
执行命令查找:find /usr/share/cups/model -name "*打印机型号关键词*" -type f | head -n1,例如:find /usr/share/cups/model -name "*P1108*" -type f
方法二:备份并编辑PPD
sudo cp /usr/share/cups/model/xxx.ppd /usr/share/cups/model/xxx.ppd.bak
sudo vim /usr/share/cups/model/xxx.ppd
方法三:在文件末尾插入以下两行(注意缩进必须为一个制表符):
*cupsManualCopies: false
*Timeout: 90
此操作仅延长该型号驱动发起连接时的单次等待上限,不改变重试次数,但能避免因打印机冷启动慢导致的首次连接被误判为失败。
验证重试机制是否生效
执行命令触发一次可控失败场景:
lpstat -p > /dev/null 2>&1 && echo "CUPS服务在线" || echo "CUPS服务异常"
然后临时断开目标打印机网线,立即提交测试任务:
echo "test" | lp -d "HP-LaserJet-P1108" -o sides=one-sided
观察/var/log/cups/error_log末尾输出:
grep -i "retry\|connecting\|failed" /var/log/cups/error_log | tail -10
若看到类似“connect failed, retrying in 5 seconds (2/3)”字样,则说明重试逻辑已激活;若仅出现一次“connect failed”即终止,则配置未生效或PPD路径错误。











