我最近开始使用 Linux,它在我的 PC 上与 Windows 10 双启动。我在 Ubuntu 16.04 中安装了一些文件,我的 PC 上为 Ubuntu 分配了 41 GB 的空间。但突然出现提示,说我没有太多剩余空间。经过一番查看,我发现它主要被日志文件占用,更具体地说是“syslog.1”文件。我很确定我的应用程序中有一团乱麻,它反复记录这些问题。我将删除大部分应用程序并重新开始。
但是现在,我该如何清理这个文件并释放它占用的 37 GB 空间?这会有帮助吗?我在论坛上找到了这个。
sudo gzip syslog.1
更新:
上述代码通过将 37 GB 的日志文件压缩到大约 800 MB 来工作。但是,我正在寻找一个永久的解决方案来查找导致日志文件增大的错误。我还安装了很多 .deb 文件。它们有很多未满足的依赖项需要下载。我如何恢复此操作并删除具有未满足依赖项的文件?
我也尝试过:
sudo apt-get autoremove
sudo apt-get clean
这些似乎不起作用。
答案1
37GB 的日志文件本身就是一个问题,尤其是当系统只有几天的时候。你必须监控日志文件才能知道发生了什么。最好是删除旧文件,因为它太大了,无法处理。然后你可以安装日志旋转。使用它,您可以清理日志文件。它可以每天、每周或任何您想要的时间“轮换”日志文件。对于您来说,应该是每天。然后,您指定要保留多少个日志文件,另外还需要压缩旧日志文件。
37GB 的文件压缩后只有 4GB,所以即使你必须保留其中的五个也不会有问题。这仍然有点极端,但这只是让你了解 logrotation 可以做什么。
下面你可以看到我的 Apache logrotate 配置,带有压缩和延迟压缩。它将日志保留 14 天。对于你的日志,你应该谷歌一下什么是好的配置。
/var/log/apache2/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
if /etc/init.d/apache2 status > /dev/null ; then \
/etc/init.d/apache2 reload > /dev/null; \
fi;
endscript
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi; \
endscript
}
当一切运行正常时,您可以将日志轮换设置回 30 天或其他时间。
哦,如果这不是您每天使用的系统,请手动运行 logrotate 作业。如果 cronjob 设置为在凌晨 3 点运行,它可能不会运行,您的问题将继续存在。
更新
您需要将其添加compress
到您的 logrotate 配置中。您可以将其添加到 中的所有配置中/etc/logrotate.d
。对于现在太大的日志,请删除它们或像您之前那样压缩它们。考虑到您永远不会用它做任何事情,800MB 仍然太多了,因此请将其删除:sudo rm syslog.1.gz
,并删除任何太大的内容。
答案2
您只需使用以下代码中的 logrotate 来管理它即可vi etc/logrotate.conf
:
/var/log/syslog1
{
daily
size 100 M(/* It can be k ,M ,G etc*/)
compress
postrotate
cat /dev/null >/var/log/syslog1 (/* It will make log file null*/)
endscript
mail [email protected]
rotate 4
}
您还可以通过以下方式找出更大尺寸的文件:
du -a /var | sort -n -r | head -n 10