起因
服务器报错:no space left on device
翻译:设备上没有剩余空间
解决方法
清理数据,这里有个点要注意,
对于重要文件,一定要备份。
步骤
1 首先,需要确定哪个分区或目录占用了大量空间。
执行结果示例:
结果说明
具体需要关注哪个分区要看你的应用启动的时候会在哪个分区输出日志或生成数据文件。也就是说应用部署在哪个分区,就需要关注哪个分区。哪个分区的路径你要产生数据你就需要关注哪个分区。或者如果是初学者可以简单的看Use%这列,看哪个比较接近百分百,就去看那一行对应的Mounted on列,也就是服务器路径,清理这个路径里面的内容。
到这里我们要知道的信息是我需要清理哪个路径下面的内容。
2.找到对应的分区或者目录之后要进一步确认要清理的目录
这里面我推荐的命令是
这个命令如果权限不够可以尝试加sudo。
执行结果示例:
结果说明
可以看到目录的占用的磁盘空间大小是一个递进的关系。简单来说如果/home/user占用了很多磁盘空间,那么它的上级目录/home也一定占据了很多的磁盘空间,并且只多不少。
通常du -ah / | sort -rh | head -n 10看前十行就够了,当然对于比较复杂的情况也可以看更大的范围。
3清理目录,删除文件
1.清理某个路径下所有文件的命令
要清理(即删除)某个路径下的所有文件和子目录,可以使用rm -rf命令。但请务必小心,因为这个命令会递归地删除指定路径下的所有内容,并且不会提示确认。一定要对重要文件备份备份再备份。
注意:将/path/to/directory/替换为您要清理的实际路径。使用*表示删除该目录下的所有文件和子目录。如果您只想删除文件而保留子目录,可以使用find命令结合-type f选项:
2.删除某个特定的文件
上面rm加文件路径是可以直接删除某个文件,但是对于calalina.out通常不会这样处理。直接删除打印日志会有问题。一般用下面的方法把文件置空。
这个命令会打开 /opt/tomcat/logs/catalina.out 文件,并将其内容清空。如果文件不存在,这个命令会创建一个空文件。但是,请注意,如果 Tomcat 正在向该文件写入日志,这个操作可能会导致一些日志丢失(即那些尚未写入磁盘但在 Tomcat 内部缓冲区中的日志)。
或者
truncate 命令用于调整文件的大小。使用 -s 0 选项可以将文件大小设置为0,从而清空文件内容。与 > 操作符类似,如果文件不存在,truncate 命令通常会报错(除非使用了特定的选项来允许创建文件)。但是,truncate 通常被认为在处理大文件时比 > 更高效,因为它不需要实际地读取或写入文件内容。
3.删除某一类文件
删除Tomcat日志路径下所有以.log结尾的文件