我有一个小的Linux服务器(Ubuntu服务器,12.04 LTS)作为一个打印版本服务器。 本质上,我已经定义了一个CUPS打印机,并且在printer.conf中添加了Option job-hold-until indefinite项,这样客人到图书馆就可以支付现金打印出来,桌面上的某个人可以点击“Release Job” CUPS网页界面将其发送到打印机。
问题是,定期CUPS网页界面将停止响应。 错误日志将填满这样的消息:
E [10/Sep/2013:13:28:04 -0500] Unable to create certificate file /var/run/cups/certs/0 - Too many open files E [10/Sep/2013:13:28:04 -0500] [CGI] Unable to create pipe for /usr/lib/cups/cgi-bin/jobs.cgi - Too many open files E [10/Sep/2013:13:28:04 -0500] Unable to create certificate file /var/run/cups/certs/0 - Too many open files
大部分消息必须与Web界面的SSLencryption相关的文件处理。 它似乎是打开它们,然后从不closures它们,直到它开始打“太多打开的文件”错误。
我们并不需要SSLencryption。 它已经被封锁在build筑物内的工作人员电脑的IP上。 所以,第一次发生这种情况时,我试图通过将DefaultEncryption Never添加到cupsd.conf来完全禁用SSL。 我们现在可以不使用SSL来访问networking界面,但是今天上午问题重演。
所以…我如何说服CUPS 1)closures文件,当他们完成,或B)不打开他们的第一个地方?
进一步的研究表明,这个问题是由Ubuntu安全机制AppArmor造成的。 这是干扰CUPS通常访问,CUPS不知道该怎么办。 为了解决这个问题,我在AppArmor中禁用了CUPSconfiguration文件:
sudo ln -s /etc/apparmor.d/usr.sbin.cupsd /etc/apparmor.d/disable/ sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.cupsd