前置问题
阿里云服务器上部署了springboot服务,将服务放在/etc/systemd/system路径下,并使用systemctl启动服务,在Service脚本中设置了工作路径为/root,代码运行的日志放在了/root/logs中 问题:阿里云服务器磁盘总是报警,某个文件占用空间增长速度过快
排查磁盘占用情况 使用du命令查看文件夹大小,然后使用sort命令排列,组合起来如下:
du -sh * | sort -rh
解释一下这个命令:
du 命令用于估算文件或文件夹的磁盘使用情况。 -s 选项用于显示文件夹的总大小,而不显示其子文件夹的详细信息。 -h 选项用于以人类可读的格式显示文件夹大小(例如,使用KB,MB,GB等单位)。
- 通配符表示当前目录下的所有文件夹。 sort 命令用于排序输出结果。 -r 选项用于反向排序,即从大到小排列。 -h 选项用于人类可读的排序,以便正确地处理文件夹大小的单位。 如图所示,可知var目录占用最多,进入var目录继续排查,最终确定log文件夹占用了较大空间,在里面发现messages开头的文件和我自己部署的SpringBoot服务的/root/log中的文件内容一模一样,说明Linux系统保存了两份日志
解决方案 停止系统日志写入 查看系统日志的配置,打开 /etc/rsyslog.conf,找到以下配置:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
改为:
*.none /var/log/messages
保存后,重启:
systemctl restart rsyslog
查看是否修改 通过ll命令查看最近修改时间,发现文件停止写入了
或者可以使用tail -f /var/log/messages命令查看最后日志写入时间,也可以查看是否停止写入了
为什么出现这个原因 /etc/rsyslog.conf文件中的配置, 日志服务的配置文件中主要定义了服务的名称、日志等级和日志记录位置。
*.info;mail.none;authpriv.none;cron.none /var/log/messages
解释一下这个命令:
- 表示所有服务。 info 表示日志等级为info,当日志等级大于等于info,都将日志写入后面那个路径 ; 选项用户分割不同的服务和日志等级,none表示没有重要级,忽略这个日志服务,该服务的所有日志都不再记录。 /var/log/messages 就表示了日志的存储地址。
通过以上方法就可以解决服务器磁盘报警问题,究其原因就说log日志太大,占用的空间太多,通过一些命令可以进一步查看是哪些文件过大