通过清空日志/var/log/messages来解决linux系统中“No space left on device”的问题

分类:计算机 | 操作系统 | Linux | 综合 608
更新:2021-12-04 01:51:42
编辑

1 问题说明

最近在项目测试环境的一个服务器上执行一些命令时发现总是提示“No space left on device”,意思是系统磁盘空间满了,敲命令用tab补全也不行了,于是我用命令:

df -ah

查看了一下系统磁盘的使用情况,发现根目录/下面的空间几乎已经满了:

根目录/下面可用的空间只剩下20k了,怪不得会提示说磁盘空间满了。

2 问题解决

首先要查一下到底是哪个地方占用了比较多的磁盘空间,看看能不能清理下,于是使用命令:

du -sh *

注:du -sh *可以查看某个目录下所有第一级文件夹的空间大小,假如A目录下有3个文件夹(A1,A2,A3),那么不管A1,A2,A3里面还有多少级子文件夹,只计算A1,A2,A3三个文件夹的空间大小。

从根目录/开始一级一级查看各级目录下面的空间占用情况,最后发现有个文件/var/log/messages竟然达到了70个G。

/var/log/messages存放的是系统的日志信息,它记录了各种事件,基本上什么应用都能往里写日志。

看来这个文件好长时间都没清理了,需要清理一下了,当然我们不能直接把这个文件删掉,直接删除日志文件往往导致新产生的日志记录无法被写入到日志文件中(因为它已经被删除了),我们可以使用命令:

cat /dev/null > /var/log/messages

来清空/var/log/messages里面的内容,释放空间。

注:可以把/dev/null看作"黑洞",它等价于一个只写文件,所有写入它的内容都会永远丢失,而尝试从它那儿读取内容则什么也读不到,因此,/dev/null 对命令行和脚本都非常的有用