我最近遇到了 .xsession-errors 文件的问题 - 它变得非常大(> 90GB)并且占用了所有磁盘空间:我如何检查 /tmp 中占用了哪些磁盘空间?。我用命令清理了它> .xsession-errors
,但一小时后它又变大了。所以我删除了它(rm .xsession-errors
) - 它有帮助,因为它没有被重新创建,但一小时后磁盘空间又消失了 - 现在没有了,.xsession-errors
但我不知道内存在哪里:
df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 106640456 101223392 4 100% /
udev 8166744 8 8166736 1% /dev
tmpfs 3270224 972 3269252 1% /run
none 5120 0 5120 0% /run/lock
none 8175552 152 8175400 1% /run/shm
du -sc * .[^.]* | sort -n
0 initrd.img
0 initrd.img.old
0 proc
0 sys
0 vmlinuz
0 vmlinuz.old
4 cdrom
4 lib64
4 media
4 mnt
4 selinux
8 dev
12 srv
16 lost+found
68 tmp
1124 run
3396 lib32
5164 .rpmdb
5540 root
8888 sbin
9120 bin
17132 etc
106080 opt
116956 boot
861908 lib
3530584 usr
3821836 var
13371260 home
21859112 total
因此,大约使用了 100GB,但du -sc * .[^.]* | sort -n
在根目录中执行时只发现约 21GB - 那么什么占用了 80GB?如何检查?我怀疑当我删除“.xsession-errors”文件时,错误被重定向到其他地方 - 但是在哪里呢?
lsof | ( grep -n 1 '.' ; grep '.xsession-errors' )
gnome-ses 2748 someuser 2w REG 8,1 80997797888 4194313 /home/someuser/.xsession-errors (deleted)
gnome-set 2797 someuser 2w REG 8,1 80997797888 4194313 /home/someuser/.xsession-errors (deleted)
compiz 2825 someuser 2w REG 8,1 80997797888 4194313 /home/someuser/.xsession-errors (deleted)
vino-serv 2836 someuser 2w REG 8,1 80997797888 4194313 /home/someuser/.xsession-errors (deleted)
nm-applet 2837 someuser 2w REG 8,1 80997797888 4194313 /home/someuser/.xsession-errors (deleted)
bluetooth 2838 someuser 2w REG 8,1 80997797888 4194313 /home/someuser/.xsession-errors (deleted)
gnome-fal 2839 someuser 2w REG 8,1 80997797888 4194313 /home/someuser/.xsession-errors (deleted)
polkit-gn 2844 someuser 2w REG 8,1 80997797888 4194313 /home/someuser/.xsession-errors (deleted)
nautilus 2851 someuser 2w REG 8,1 80997797888 4194313 /home/someuser/.xsession-errors (deleted)
sh 2901 someuser 2w REG 8,1 80997797888 4194313 /home/someuser/.xsession-errors (deleted)
gtk-windo 2902 someuser 2w REG 8,1 80997797888 4194313 /home/someuser/.xsession-errors (deleted)
gnome-ter 3169 someuser 2w REG 8,1 80997797888 4194313 /home/someuser/.xsession-errors (deleted)
gdu-notif 3235 someuser 2w REG 8,1 80997797888 4194313 /home/someuser/.xsession-errors (deleted)
telepathy 3253 someuser 2w REG 8,1 80997797888 4194313 /home/someuser/.xsession-errors (deleted)
gnome-scr 3276 someuser 2w REG 8,1 80997797888 4194313 /home/someuser/.xsession-errors (deleted)
update-no 3508 someuser 2w REG 8,1 80997797888 4194313 /home/someuser/.xsession-errors (deleted)
deja-dup- 3964 someuser 2w REG 8,1 80997797888 4194313 /home/someuser/.xsession-errors (deleted)
update-ma 25719 someuser 2w REG 8,1 80997797888 4194313 /home/someuser/.xsession-errors (deleted)
您说得对 - 此文件 (.xsession-errors) 仍然占用 80GB!问题是许多程序都在使用它 - 我在网上查过,很多人都有这个问题 (bug),但我发现最好的解决方案是设置 cron tab 作业,当文件太大时将其截断...但我现在无法访问文件,因为它已被删除 - 我尝试创建另一个 .xsession-errors 文件(非常幼稚 ;),但它不再是同一个文件了...现在我的问题是,我如何才能删除这个已删除的文件,或者至少恢复它以截断它...
答案1
如果删除打开的文件,文件本身不会被删除,只会删除其名称。只有当文件被正在写入它的进程关闭时,空间才会被回收,因此删除的文件会继续存在并增长。
如果在您“删除”该文件后,某个进程仍打开该文件,您可以找出哪个进程正在使用该文件:
lsof | ( grep -n 1 '.' ; grep '.xsessions-errors' )
输出将会像这样:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
problematic-program 1234 auser 4u REG 252,2 0 1967438 /home/auser/.xsession-errors (deleted)
要查看“已删除”文件现在占用了多少空间:
ls -l /proc/1234/fd/4
其中 1234 是上面显示的 PID,4 是 FD。一旦您知道有问题的程序,您就可以从那里进行故障排除。
用来lsof
确定已打开可写入的程序列表后.xsession-errors
,您需要关闭并重新启动每个程序。如有必要,您可以关闭并重新启动系统,尽管这并不是必需的。
如果日志文件增长很快,理想的解决方案是找出原因并解决问题(例如缺少某些资源)。但是,如果您愿意,可以使用以下方法将错误重定向到 /dev/null:https://askubuntu.com/questions/93718/how-do-i-prevent-xsession-errors-from-eating-disk-space