我的根磁盘已满,我怀疑是因为磁盘空间被膨胀的 .xsession-errors 文件锁定了。膨胀是由正在运行的进程导致的,这些进程使错误文件保持打开状态并将数据转储到其中,即来自几个不同应用程序的 PID,例如,chromium 是最大的罪魁祸首。我怀疑是这种情况,因为 lsof | grep removed 返回如下行:
chromium- 27607 user 2w REG 8,1 1809493864448 108527952 /home/user/.xsession-errors (deleted)
chromium- 27762 user 2w REG 8,1 1809493864448 108527952 /home/user/.xsession-errors (deleted)
这里的转折是,我设置了一个 cron 作业来删除文件 home/user/.xsession-errors,这是针对此问题的建议解决方法。您可以想象,当 chromium 打开无数进程时,这种情况会如何快速运行模拟!我使用的是 64 位 UBUNTU 12.04 机器,具有以下 HD (EXT4) 配置:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 1.8T 34G 1.7T 2% /
udev 12G 4.0K 12G 1% /dev
tmpfs 4.8G 1.2M 4.8G 1% /run
none 5.0M 16K 5.0M 1% /run/lock
none 12G 2.1M 12G 1% /run/shm
/dev/sde1 1.8T 450G 1.3T 26% /media/SEA2T
/dev/sdd1 2.7T 201M 2.6T 1% /media/BUFF3T
/dev/sdb 3.6T 118G 3.3T 4% /media/INDAR
/dev/sdc 3.6T 3.0T 469G 87% /media/ALAYA
我到目前为止所做的努力都无济于事:
- 是否可以回收这个空间?显然我的情况不行,尽管其他人设法截断了文件以释放磁盘。
- 由于这似乎是一种虚拟事件,没有真正的文件作为罪魁祸首,因此重新启动对我来说是可行的选择。
- 如何确保这种情况不再发生?我仍然不知道。目前的解决方法是将
ERRFILE
文件中的变量设置/etc/X11/Xsession
为/tmp/$USER-xsession-errors
以便弄清楚这个错误文件中转储了什么。我很感激任何关于如何一劳永逸地处理失控的 xsession-errors 文件的建议!提前致谢。
答案1
您可能能够通过ls -l /proc/<PID>/fd/*
(dangerous) 访问该文件,一旦确定了 fd 号,就使用truncate /proc/<PID>/fd/<fd> --size 0
(even more dangerous) 截断它。这是重新启动或终止进程的替代方法。但是,很难说对这样一个残缺的文件进行后续写入时会发生什么。
您真正应该做的是找出写入该文件的内容以及原因,并采取一切必要措施阻止它这样做。即使忽略存储问题,写入调试日志也很昂贵并且会影响性能。因此您应该找到根本原因。