使用100%CPU的cupsd,创建大型(80GB +)error_log


9

几天前,我意识到我的Ubuntu计算机在登录后无法加载。在liveCD上进行一些挖掘之后,我意识到我的硬盘已达到100%的容量,因此我删除了一些大文件并能够登录。文件,但最终恢复了root权限。

然后,我注意到我的机器运行缓慢,并top显示使用100%CPU的cupsd。我以前从未看过该程序,但很快就意识到这是一个合法程序。

我删除了大约40GB的视频,却发现我的硬盘空间几乎在我眼前就耗尽了。经过一点研究和直觉,我意识到它可能是一个日志文件,被炸掉了,并且可以肯定地ls -lh /var/log/cups/向我展示了一个大于80GB的error_log文件。

我删除了文件sudo rm -rf /var/log/cups/error_log,使用终止了服务sudo service cups end,然后继续经营业务。我意识到之后,删除error_log的内容是个好主意,然后再将其删除,但是我想摆脱它,然后再次锁定。

那是昨天。今天,我再次启动笔记本电脑,并看到cupsd再次以100%cpu的速度运行,并且确实可以看到磁盘空间正在耗尽。我停止了该服务并运行tail -f /var/log/cups/error_log,其中有数百万行:

W [15/Jul/2015:11:23:03 -0700] Notifier for subscription 911 (dbus://) went away, retrying!
E [15/Jul/2015:11:23:03 -0700] File "/usr/lib/cups/notifier/dbus" has insecure permissions (0100777/uid=0/gid=0).

==编辑============================================= ==================

ls -l /usr/lib/cups/notifier/dbus如注释中所述,将权限和所有权显示为-rwxrwxrwx 1 root root应有-rwxr-xr-x 1 daemon root的状态。sudo chown root:root /usr/lib/cups/notifier/dbus也没有解决所有权问题。

最终,我卸下并重新安装了杯子,但无济于事。这些链接被提供为可能有用的指南((偶然地在/上使用chmod -R恢复chown权限),但最终导致建议重新安装操作系统本身。


输出是ls -l /usr/lib/cups/notifier/dbus什么?我很久以前也遇到过类似的问题,解决此问题的唯一简单方法是禁用CUPS ...(那时不进行打印)
Wilf

1
-rwxrwxrwx 1根14k 2014年9月5日/ usr / lib / notifier / dbus
wndg

1
杯子到底能做什么?我的意思是说,如果没有严重影响就可以禁用它..
wndg

1
它可以完成大多数打印工作,因此,如果没有它,您将无法打印。我认为文件的权限应该是-rwxr-xr-x (即我的Ubuntu 14.04安装的权限),因此您可以通过运行sudo chmod 755 /usr/lib/cups/notifier/dbus(然后重新启动CUP或计算机)来解决问题。
2015年

1
像打印纸一样打印吗?现在-rwxr-xr-x,重新启动cupsd之后,权限仍在95%以上并创建大的error_log文件(但是看似没有那么快?)。
wndg

Answers:


16

对于Ubuntu 15.10,对我有用的是:

sudo service cups stop
sudo rm /etc/cups/subscriptions.conf*
sudo rm -r /var/cache/cups
sudo service cups start

(如果您不能停下来试杯):

ps aux | grep cups

从输出中获取进程ID(pid)和:

kill -9 (pid you have learned here)

2
我这样做是有帮助的,但是直到重新启动PC为止。有什么办法可以持续下去吗?
tobias_k

1

在Debian 9上

  1. 用户@机器: sudo su

  2. root @机器:

chown -R root:root /usr/lib/cups/* && \
chmod -R 755 /usr/lib/cups/* && \
/etc/init.d/cups restart

返回:

 ok通过systemctl cups.service重新启动杯子

并保存我的日志和我的CPU


1

简单地做到了,它对我有用:

1) sudo chmod 755 /usr/lib/cups/notifier/

2) ll /usr/lib/cups/notifier/

3) sudo /etc/init.d/cups restart

完成了 !!!


2
您能否评论一下这到底是做什么的,或者为什么它可以解决问题?
tobias_k

0

我无法发表评论,因此形式为答案:

sudo chown root:root /usr/lib/cups/notifier/dbus

既然您拥有权限,可能会有所帮助。您的系统上的用户1是谁?如果您不知道文件的权限/所有权是如何从默认值更改的,则问题可能出在冰山一角。如果是这样,建议重新安装。


我运行了命令,然后重新启动,似乎没有任何变化。不知道如何找出用户1是谁。正如您所说的那样,您认为可能是“其余的冰山”?
wndg

新安装的Ubuntu系统上的用户1是守护程序。您的ls命令返回-rwxrwxrwx 1 root,而不是-rwxr-xr-x daemon root表明系统文件已损坏或丢失。守护程序用户1与/ etc / passwd中的名称没有关联。
JEL

我只是看着/ etc / passwd而用户1是守护程序,但是我猜你说我的问题与此无关。那么我将如何找到用户1?
wndg

如果用户1是passwd中的守护程序,则ls应该显示为拥有dbus文件的用户。您是否尝试过重新安装杯子?确保先备份/ etc / cups。
JEL

编辑:id daemon给我uid=1(daemon) gid=1(daemon) groups=1(daemon)
wndg
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.