[已解决]服务器磁盘报警

前置问题

阿里云服务器上部署了springboot服务,将服务放在/etc/systemd/system路径下,并使用systemctl启动服务,在Service脚本中设置了工作路径为/root,代码运行的日志放在了/root/logs中
问题:阿里云服务器磁盘总是报警,某个文件占用空间增长速度过快

排查磁盘占用情况

使用du命令查看文件夹大小,然后使用sort命令排列,组合起来如下:

du -sh * | sort -rh

解释一下这个命令:

  1. du 命令用于估算文件或文件夹的磁盘使用情况。
  2. -s 选项用于显示文件夹的总大小,而不显示其子文件夹的详细信息。
  3. -h 选项用于以人类可读的格式显示文件夹大小(例如,使用KB,MB,GB等单位)。
  4. * 通配符表示当前目录下的所有文件夹。
  5. sort 命令用于排序输出结果。
  6. -r 选项用于反向排序,即从大到小排列。
  7. -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

解释一下这个命令:

  1. * 表示所有服务。
  2. info 表示日志等级为info,当日志等级大于等于info,都将日志写入后面那个路径
  3. ; 选项用户分割不同的服务和日志等级,none表示没有重要级,忽略这个日志服务,该服务的所有日志都不再记录。
  4. /var/log/messages 就表示了日志的存储地址。

以上方法参考了以下文章:

https://blog.youkuaiyun.com/zzyzenith/article/details/84327993
Linux系统查看文件夹大小,并按照从大到小排列~ - 知乎 (zhihu.com)
日志管理-rsyslogd服务(/etc/rsyslog.conf 配置文件)-优快云博客
【Linux】rsyslog日志服务(配置,测试、日志转储)-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值