我正在尝试释放服务器硬盘中的空间,因此我将日志文件中的旧日期与 sed 进行匹配,并且它正在减少,但我的根分区现在使用了 98% 的空间,而不是我调用之前使用的 91% sed。我这样做了sed -i '/^Jan/ d' file.log
,我的日志文件从 6G 减少到 400M。我正在find / -size +1G
尝试搜索临时文件或类似的文件,但它与新文件不匹配。
编辑:我这样做是echo -n > file.log
为了避免服务崩溃,但这只是暂时的,因为问题仍然存在
答案1
sed 的选项--in-place
无法真正就地编辑文件,因此它实际上相当于:
if sed ... input > /tmp/output$$ ; then
mv /tmp/output$$ input
else
rm /tmp/output$$
fi
这意味着在执行该mv
命令之前,您可以将磁盘上输入文件的大小加倍(或更糟)。当文件系统接近满时,它们的效率就会变得非常低。
听起来更大的问题是您的磁盘空间不足,或者您将 /var/log 和 /tmp 安装在与 / 相同的分区上,并且如果 / 位于小分区上,那么您现在和下一个都会将其填满一周以及之后的一周等等。
查看mount
和df /tmp
,df /var/log
了解您的磁盘是如何设置的。您需要:
- 修复磁盘安装
- 获取更大的磁盘
- 调查
logrotate
- 停止记录这么多
- 或以上的某种组合
答案2
在 sed -i 上运行 strace 应该可以清楚地看出临时文件的位置。但最简单的方法是不使用 -i。将输出重定向到有空间的分区上的文件。