我曾经在各种论坛上看过很多关于这个问题和类似问题的post,但似乎没有人能够提供解决scheme。
基本的问题是这样的:
在[插入Linux发行版的旧版本]上,打印效果很好,但在更新到[较新版本的Linux发行版]之后,现在在将文件发送到打印提示和打印机实际开始打印。
在我的特殊情况下,打印在Ubuntu 8.04上立即开始,但升级到10.04后,有10秒的延迟。 我在Ubuntu服务器上使用lpr命令进行打印,但问题出现在10.04桌面上。 从我读过的,它也影响MOST Linux发行版的更新版本。 Fedora,OpenSUSE,Arch等
打印机都是networking打印机。 从Windows打印也是即时的。 打印机上的指示灯会立即开始闪烁,但是10-15秒钟内没有任何指示。
Ubuntu 10.04使用CUPS 1.4.3。 我认为这可能是CUPS中的一个错误,所以我编译了CUPS 1.4.5(最新稳定版)来取代Ubuntu 1.4.3。 但是还有一个延迟。
任何想法可能导致这个? 还是一种解决问题的方法来找出是什么原因造成的?
更新 :我设置日志级别进行debugging,并在我的日志中获得大约660行的输出作业。 我发送的testing文件从添加到提示到提示出现的时间花费了10秒。
我不会在这里发布整个事情(除非你真的想要!),但是这里的亮点是:
这个工作被提了出来,在同一时间发生了一堆事情。 那秒钟的最后一行是:
D [28/Nov/2010:14:44:19 -0500] Discarding unused printer-state-changed event...
接下来的日志行会在4秒钟后发生:
D [28/Nov/2010:14:44:23 -0500] [Job 3071] prtGeneralCurrentLocalization type is 0, expected 2!
所以我们有一个4秒钟的延迟。
1秒后我们得到:
D [28 / Nov / 2010:14:44:23 -0500] PID 15448(/ usr / lib / cups / filter / pdftoraster)退出,没有错误。 D [28 / Nov / 2010:14:44:24 -0500] [Job 3071]写入了8192字节的打印数据... D [28 / Nov / 2010:14:44:24 -0500] [Job 3071]读取8192字节的打印数据... 我[28 / Nov / 2010:14:44:24 -0500] [Job 3071]打印第1页,完成57%... 我[28 / Nov / 2010:14:44:24 -0500] [Job 3071]打印第1页,完成59%... D [28 / Nov / 2010:14:44:24 -0500]放弃未使用的工作进度事件... D [28 / Nov / 2010:14:44:24 -0500]放弃未使用的打印机状态更改事件... 我[28 / Nov / 2010:14:44:24 -0500] [Job 3071]打印第1页,完成60%...
其中重复,直到:
我[28 / Nov / 2010:14:44:26 -0500] [Job 3071]打印第1页,99%完成... D [28 / Nov / 2010:14:44:26 -0500]放弃未使用的工作进度事件... D [28 / Nov / 2010:14:44:26 -0500]放弃未使用的打印机状态更改事件... 我[28 / Nov / 2010:14:44:26 -0500] [Job 3071]准备打印。
然后它继续:
D [28 / Nov / 2010:14:44:26 -0500] [Job 3071]写入8192字节的打印数据... D [28 / Nov / 2010:14:44:26 -0500] [Job 3071]读取8192字节的打印数据...
一遍又一遍,直到:
D [28 / Nov / 2010:14:44:29 -0500] [Job 3071]读取3361字节的打印数据... D [28 / Nov / 2010:14:44:29 -0500] [Job 3071]写入3361字节的打印数据... 我[28 / Nov / 2010:14:44:29 -0500] [Job 3071]发送打印文件,等待打印机完成...
这是打印机实际开始生产输出的点。 整整10秒钟后。
我经历了一些相同的。 我不确定这是否与您同样的问题,但是我们使用收据打印机来处理这些问题,其中一些在打印时突然开始有4秒钟的延迟,而另一些则立即开始。
这是杯升级(Slackware的Linux)后。
经过大量debugging,我们发现支持SNMP的打印机没有延迟,而不支持SNMP的打印机确实有延迟。
在升级之后,似乎杯子在发送实际的打印作业之前试图通过SNMP从打印机获取信息。
我正在寻找一种方法来禁用此function…如果我find解决scheme,将尝试写回。
我应该提到,我们正在使用原始/套接字连接到这些打印机。 我看到RedHat有一个关于这个的报告错误 ,但我不允许查看它(BZ#709896)
我真的不知道如何禁用杯子中的SNMP通信。 :\
我会build议在Ubuntu的论坛看下面的post,因为他们似乎也有打印机的通信问题。
http://ubuntuforums.org/showthread.php?t=1101273
希望RayQuang帮忙
我有与user127222相同的经验。 对于某些不支持SNMP的打印机,打印作业将有4秒的延迟。 在CUPS学习这些代码之后:
if ((ppd = ppdOpenFile(getenv("PPD"))) == NULL || ((ppdattr = ppdFindAttr(ppd, "cupsSNMPSupplies", NULL)) != NULL && ppdattr->value && _cups_strcasecmp(ppdattr->value, "true"))) { ppdClose(ppd); return; }
我发现我可以通过更新该打印机的PPD文件来禁用这些SNMP请求。 使用:
*cupsSNMPSupplies: False
参考: CUPS PPD扩展