我们有一个运行CUPS的Redhat机器(2.6.9-42.ELsmp)。 偶尔,人们会将大文件发送到打印机,然后卡住,重新启动打印机。 300秒后没有响应,打印机变得不可用。 然后,CUPS将从可用的打印机列表中删除打印机,而不再尝试它。
无论如何,我可以设置它,这样CUPS将尝试与打印机交谈,无论打印机何时再次联机,都将其重新添加到列表中。
我们“解决”的方式是每次发生时,我们手动修改printers.conf文件,将打印机状态更改为“空闲”,然后重新启动服务。 我相信有这样做更好,不是吗?
谢谢,
担。
这应该通过更改cupsd.conf或printers.conf中的ErrorPolicy来解决:
CUPS 1.3 / Mac OS X 10.5ErrorPolicy
例子
ErrorPolicy中止作业
ErrorPolicy重试作业
ErrorPolicy停止打印机
描述
ErrorPolicy伪指令定义当后端无法将打印作业发送到打印机时使用的默认策略。 […]
请参阅: http : //www.cups.org/doc-1.4/ref-cupsd-conf.html#ErrorPolicy
默认是:
停止打印机 – 停止打印机并保留作业以备将来打印
不过你可能想要:
retry-job – 等待N秒后重试该作业[…]
(或者可能再试这个工作)。
注意:在CUPS V1.4 +上称为FatalErrors。
你的问题可以通过不同的方式来解决,这取决于你正在运行的CUPS的版本。
另外,它取决于CUPS服务器打印队列如何连接到真实打印设备:ipp://?,socket://?,lpd://?
更新的版本的CUPS来与内置的function,可以在这里帮助。 这就是所谓的“ErrorPolicy”。 在cupsd.conf中select默认设置,并确定cupsd应如何处理不按预期行为的打印队列。 您有4个选项可以设置为默认值或单独标记到每个队列:
ErrorPolicy abort-job ErrorPolicy retry-job ErrorPolicy retry-this-job ErrorPolicy stop-printer
另外,您可以将各个ErrorPolicies设置为每个单独的打印队列。 这个设置将在printers.conf文件中被注明。 (使用lpadmin -p printername -o printer-error-policy=retry-this-job设置)。
对于旧版本的CUPS,我build议看一下CUPS 后端处理程序 。 beh是一个可以应用于任何CUPS后端的包装器。
假设你的打印队列目前已经定义了socket://192.168.1.111:9100的后端socket://192.168.1.111:9100 ,它的行为方式你不喜欢(由于networking连接问题而不时被cupsd禁用)。 用beh你可以像这样重新定义你的后端:
beh:/0/20/120/socket://192.168.1.111:9100
这将以两分钟的时间间隔重试一次作业20次,并且只有在还没有成功时才禁用队列。 或者你可以这样做:
beh:/1/3/5/socket://192.168.1.111:9100
这两次尝试之间的5秒延迟重试该工作3次。 如果作业仍然失败,它将被丢弃,但队列不会被禁用。 你想让cupsd无限期地尝试连接到设备? 好,试试这个:
beh:/1/0/30/socket://192.168.1.111:9100
无限尝试,直到打印机回来。 连接尝试之间的时间间隔是30秒。 打印机closures时作业不会丢失。 您可以通过closures打印机来故意延迟打印。 桌面打印机和/或家庭用户的良好configuration。
总的来说,没有必要乱用bash脚本,cron作业, lpadmin , cupsenable或sudo ,以重新激活CUPS队列不断下滑。
您可以简单地使用“启用”命令作为根(或其他杯子pipe理员帐户)。 如果真的出现这种情况,请使用“lpstat -a”添加一个小型的crontab来查找禁用的打印机。