文件系统因为uvcydnctrl-udev.log文件过大而快满了。

现在我的Ubuntu安装占用了我100GB以上的硬盘空间。每当我尝试使用fslint和fdupes时,它们都会显示“权限被拒绝”,无法删除重复文件。请大家帮帮我。
附加信息:
df命令的输出结果:
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             296G  191G   90G  68% /
udev                  993M  4.0K  993M   1% /dev
tmpfs                 401M  824K  401M   1% /run
none                  5.0M     0  5.0M   0% /run/lock
none                 1003M  552K 1002M   1% /run/shm
/home/zipro/.Private  296G  191G   90G  68% /home/zipro

错误的文件是一个174GB的/var/log/uvcydnctrl-udev.log

4这在Ubuntu 14.04 LTS中仍然是一个问题。 - Andrew Fielden
4这在Ubuntu 21.04中仍然是一个问题。 - John Mee
6个回答

1. 步骤:弄清楚你实际上遇到的问题

当你的文件系统突然变满时,可能有很多可能的原因。请参考Eliah Kagan的回答来了解更多相关信息。在绝大多数情况下,应该很容易识别出(并最终修复)真正的原因,所以不需要重新格式化/重装系统。

因此,第一步是找出问题的具体所在,也就是所缺失的空间去了哪里。所以首先执行:

df -hl -x tmpfs -x devtmpfs

这显示了您计算机中所有已使用分区的列表,它们的大小,使用情况以及它们的挂载点。从此列表中,选择您认为太满的一个并记录其挂载点。在您的情况下,它是挂载在/的根文件系统。
现在我们分析此文件系统内部使用空间的位置。执行:
 sudo du -xhsc /* 2> /dev/null

(用上面标识的挂载点替换/。) 需要使用sudo,因为您的用户可能无法读取所有目录。这可能需要一些时间(特别是在大型文件系统上),因为它需要访问其中的每个目录。

此命令的作用是显示给定目录内的每个文件和目录以及其大小(包括子目录)。 所以从这个列表中选择您认为应该更大的文件或目录,并在该目录上再次运行该命令。(也就是说,再次运行该命令,但将上一个列表中的大目录的名称替换/。)

例如,在您的案例中,很明显/var是唯一的大目录,所以您需要执行

 sudo du -xhsc /var/* 2> /dev/null

继续按照这些步骤进行,直到你找到一个非常大的单个文件,或者找到一个包含许多文件的目录,这些文件一起占据了所有的空间。
在你的情况下,下一步是执行。
 sudo du -xhsc /var/log/* 2> /dev/null

因为/var/log太大了,这表明有一个名为uvcdynctrl-udev.log的单个日志文件占用了174GB的空间(显然是不好的)。
第2步:确定为什么存在这些文件以及它们为什么如此庞大
现在我们需要找出为什么会有这些被识别出来的文件,或者为什么它们如此庞大(如果它们确实应该存在的话)。
在您的情况下,/var/log中的一个日志文件并不算可疑,但其大小肯定是问题。幸运的是,通过文件名进行Google搜索,可以将以下缺陷报告作为第一个结果显示出来,这显然是我们所遇到的相同问题:http://bugs.launchpad.net/ubuntu/+source/libwebcam/+bug/811604
第3步:解决问题
在这种情况下,一个与摄像头相关的日志文件似乎并不重要,所以我们可以使用命令sudo rm /var/log/uvcdynctrl-udev.log轻松删除它,并释放所有的空间。

很不幸,这个错误报告仍然是开放的,评论中没有解决方案或变通办法,所以你现在可能要暂时忍受这个错误。你可以定期删除日志文件来释放一些空间。


在运行sudo rm /var/log/uvcdynctrl-udev.log之前,你也可以使用带有图形界面的sudo baobab手动分析目录。该程序在应用菜单中显示为“磁盘使用情况分析器”。 - Orhan G. Hafif

这个问题就在于这个软件包:uvcdynctrl-udev。 它是一个无用且有bug的程序。它应该从Debian和Ubuntu的软件库中被彻底删除。不应该安装这个软件包。这个软件包不仅会创建巨大的日志文件,而且还会导致Cheese和其他网络摄像头应用程序崩溃或工作非常糟糕(不能使用Cheese或Guvcview以全分辨率捕获视频?删除这个软件包,一切将正常运行!)
这个问题已经存在多年了,而uvcdyn....的维护者似乎对此毫不在意。
解决方法很简单:sudo apt-get remove uvcdynctrl-udev。 如果你想确保自己的操作,请使用Synaptic。搜索有bug的软件包uvcdynctrl-udevuvcdynctrl-udev-data。标记它们进行完全删除。你会注意到它不会影响其他程序,它们并不是依赖关系,所以你可以安全地删除它。来吧,去做吧。
然后检查/var/log,搜索这个巨大的uvcdynctrl-udev.log,以root身份删除它。(打开一个终端)**
cd /var/log
sudo rm uvcdynctrl-udev.log

相信我,你不会错过这个优惠。

tuprofe demusica是对的!我差点扔掉了一台显微镜,因为我以为它坏了。在删除这个软件包后,我再试了一次。 - rickyrockrat
刚刚执行了删除软件包的操作,在我的情况下没有使用-udev后缀,所以命令是:sudo apt-get remove uvcdynctrl。之后删除了日志文件,并且在其他应用程序方面没有遇到任何问题。 - Michel Rummens

如果你复制和粘贴了系统文件,手动复制它们,那么你应该提供更多关于你复制和粘贴的细节,包括你将它们粘贴到哪里,你能记得的任何信息。即使在你的机器上额外复制所有系统文件,也不太可能导致100GB的磁盘使用量。Ubuntu安装所需的可用空间少于5GB,即使是安装了许多软件包的Ubuntu系统,其系统文件占用的空间也不太可能超过这个大小的几倍。你可能需要复制很多次才能占用那么多空间。或者你复制了除系统文件之外的文件吗?
如果你的Ubuntu系统自己扩展了(从日志文件和更新中)以占用100GB的空间(或50GB的空间),仅限于系统文件(而不是你的文档、图片、视频、虚拟机等等),那么肯定出现了严重问题。最有可能导致这种情况的三个常见原因可能是:
这并不是真的发生了,你误解了系统提供给你的信息。(请注意,我并不是在告诉你你错了;如果你知道你是如何拥有100GB的系统文件的,那么下面的两个原因都是不正确的。)
有一个错误影响了你的系统,导致已使用和可用空间的报告不准确。
有一个相当严重的错误影响了你的系统,导致文件(可能是/var/log中的日志文件)以极高的速度无限增长。
Sergey所说,不加选择地删除所有具有相同内容的文件很可能会对您的系统造成损害。例如,您的系统中可能存在一些空文件,它们被用作锁定或表示某种条件。您还可能有包含相同文件的程序副本(当文件为两个程序提供相同功能时,这些文件尚未移至单独的库或软件包)。
您可能可以通过以root身份运行它来删除“重复”文件。但是,您真的不应该这样做-这很可能会对您的Ubuntu系统造成严重的伤害。
您在评论中提问:

有没有办法命令fdupes在不询问或通知我的情况下删除所有重复文件?

fdupes -f 可能可以做到你想要的。请参考fdupes手册。但是你真的不应该这样做。

相反,你应该弄清楚发生了什么。如果你希望我们帮助你解决这个问题,我们当然会愿意提供帮助。如果你扩展你的问题,解释你想要帮助弄清楚占用空间的原因,那么你要么会得到提供相关信息的答案,要么这个问题可能会被关闭为另一个提供如何找到相关信息的问题的重复问题。(无论哪种情况都有可能对你有益。)当然,这是基于你希望我们帮助你找出系统占用空间过多(或看起来是这样)的原因。

调查的第一步是检查(并通过编辑你的问题发布)以下命令的输出,它们提供关于你拥有哪些磁盘以及它们上面有多少可用空间的详细信息:

mount
df -h
sudo du -sh /*

你可以在终端窗口中运行这些命令(Ctrl+Alt+T)。最后一个命令需要一些时间。你可能会遇到一些Permission denied错误(即使你以root身份运行),主要是关于用户家目录中的.gvfs文件夹。不用担心,这没什么问题。

我有一个快速而简单的解决方案(绝对可以阻止日志文件的写入,但不能解决根本问题):

这个日志文件是由/lib/udev/uvcdynctrl写入的。

  1. 备份原始文件:sudo cp /lib/udev/uvcdynctrl /lib/udev/uvcdynctrl_backup
  2. 编辑原始文件:gksu gedit /lib/udev/uvcdynctrl
  3. 查找所有形式为"debug=1"的元素
  4. 将其改为"debug=0"
  5. 彻底删除日志文件:sudo rm /var/log/uvcdynctrl-udev.log

进入“终端”(快捷键为Ctrl+Alt+t),然后输入:
gksudo nautilus

这将以root权限打开Nautilus。现在删除你的文件。
希望这对你有所帮助!

没用,有成千上万个文件。 - user84055
你是怎么制作成千上万份副本的?这些副本看起来像这样吗?如果是的话,你可以只选择一个文件,按住Shift键,然后选择所有文件,再删除它们。 - Max Tither
问题是我找不到具体的重复文件,因为我不知道哪些文件已经被复制了,也不知道它们的位置。 - user84055
我找到了一个Bash脚本,可以用来查找重复的文件。它会找到这些文件并将它们移动到一个文件夹中,然后你只需要删除这个重复的文件夹即可。 - Max Tither
没有运气。它运行了2分钟后就停止了。 - user84055
请帮忙 - user84055

我认为在这种情况下,最好的做法是重新安装系统。考虑到明显的损坏程度、实际发生了什么事情还不太清楚以及你对手动修复的不太熟悉,重新安装是一个比较明智的选择。
请保留你的个人目录(不要重新格式化或重新分区),然后重新安装系统,这样可以清除系统目录中的问题。

1重新安装确实是一个选择,通常很容易找出大文件的拷贝位置,或者确定系统文件是否在不受控制地增长,以及它们是哪些文件。 - Eliah Kagan
@Eliah,我相信你和我会觉得很容易,但我不确定原帖作者是否能理解。而且,如果机器上没有投入太多时间(我甚至不想提到配置备份),重新安装可能是最高效的选择。 - poolie
1请注意,这个方法在这里不适用。他的/home目录与/目录位于同一个分区上,所以他无法清除该分区。而且我认为安装程序不会删除将用于安装的分区上的任何多余文件(要么全部删除,要么不删除)。 - Philipp Wendler
2安装程序将删除/var目录中的所有内容,除了/var/local目录。因此,这个答案是一个可行的选择。 - Jorge Castro