背景
对于系统服务器,一般由技术同学自行控制以及管理,但是针对服务器的监控以及告警比较容易被人忽视。所以经常会导致服务器上出现各种各样的问题。最常见的问题,就是磁盘空间被服务日志给打满了。 当服务器上磁盘已经被打满 ,服务无法正常运行时,需要做 的第一个工作就是去找到没用的日志文件,进行清空或者删除操作。 一、先看是不是 那当我们遇到类似的情况,比如访问无反应,服务器上没有日志了。第一步要做的,不是去想怎么处理,而是先确认是不是磁盘问题引起的。命令很简单df -h![476bbb01d8714a40db1a624b09c6a57d.png](https://i-blog.csdnimg.cn/blog_migrate/9aa66c3f0552f4f9ef0b7de62f49299e.png)
![71e0b3f8a70037145f4dc0770a3b2805.png](https://i-blog.csdnimg.cn/blog_migrate/775006c3ec03382f548d384e457afdb2.png)
![041cc643af400f7ef0e4f3dabaee8eb8.png](https://i-blog.csdnimg.cn/blog_migrate/dd3b20fa50f19bfcde9e8168141dd84c.png)
00 02 * * * /usr/bin/find /opt/log/* -type f -mtime +3 -exec rm {} \;
解释一下,crontab的时间设置,每天凌晨2点执行一次。可以根据自己负责的服务器情况,避免跟一些复杂的任务产生冲突。然后使用find命令找到日志目录下的所有日志文件。-mtime +3指距离当前时间96小时之前的所有文件。96/24=4天?为什么是+3呢,这个-mtime的参数,值得去深入理解一下。
-mtime 0 指过去24小时内被修改过的文件。
-mtime 1 指过去48小时至24小时内被修改过的文件。
-mtime 2 指过去72小时至48小时内被修改过的文件。
-mtime 3 指过去96小时至72小时内被修改过的文件。
-mtime -0 指当前时间之前被修改过的文件(这不就是未来被修改过的文件吗?),其实大家可以在服务器上试一下,如果当前一个日志文件一直有内容输出,也是可以把这个文件找出来的,所以-mtime -0可以理解为此刻正在被修改的文件。
-mtime +0 就比较好理解了。就是在24小时之前被修改过的文件。
-mtime -1 指24小时之内被修改过的文件,与-mtime 0的效果一致。
-mtime +1 指48小时之前被修改过的文件。
-mtime -2 指过去48小时之内被修改过的文件。
-mtime +2 指过去72小时之前被修改过的文件。
-mtime -3 指过去72小时之内被修改过的文件。
-mtime +3 指过去96小时之前被修改过的文件。
![97b4cfb4697cd551e9cf4def1a26578b.png](https://i-blog.csdnimg.cn/blog_migrate/3c844198762ae496275ce8ecf21c67f8.png)
0 */1 * * * /usr/bin/find /opt/log -type f -size +1G -exec cp /dev/null {} \;
类似之前的定时任务,执行频率调高,每一个小时执行一次,我们先要找到日志文件,多一个控制参数,就是找到内容超过1G的文件,只有特别大的文件,才是我们需要处理的目标。再去执行一个文件清空的命令,比如这边选择的是cp /dev/null filename。这样我们就可以做到,每小时去清空内容过多的日志文件。也不需要我们重启服务耽误其他测试工作。
总结
总结一下,发现服务器不可用的时候,可以先确认是否为磁盘问题(df命令),然后找到占用磁盘较多的文件(du),删除(rm)旧的或者清空(cat /dev/null)正在使用的日志文件。可以临时解决一次问题,如果经常出现类似的情况,我们就可以使用crontab来定时处理日志文件了。当然,针对线上的服务器,日志的备份还是比较重要的。千万不要图省事,参考本文的方式去处理。
也许想看
怎样在Apache Httpclient上做扩展
除敏捷实践外,项目管理还能做点什么?
你应该知道的异步服务数据防丢失方案设计
一文弄懂Nginx最核心的配置
[手把手系列之]Docker 部署 vue 项目
好文我在看?