问题出现在分支上的一个项目上,有线下反应功能出现问题.
在线上服务器查看日志的时候,突然xsehll断开连接,看了下网络没有问题,另外就是想起来是不是内存满了,因为之前在上家公司出现过类似问题,日志长期积累,导致内存空间不足,服务器会发生自动重启现象.(当然生产环境还是要谨慎哈,还是运维来负责吧)
解决方案:
1:df:查看内存状况(清理过后)
当时发现/home目录下.磁盘已经接近97%,以及根目录下也接近100%.
2:以/home为例,进入/home目录.
3:使用du -h --max-depth=1,查看当前目录下一级子文件和子目录占用的磁盘容量.
4:最终发现是日志文件过大,导致磁盘不足, 那么问题来了,日志文件我们不可能单纯删除或清空,此时我们可以使用split来切割日志.
split命令如下:
- <行数> : 指定每多少行切成一个小文件
- -b<字节> : 指定每多少字节切成一个小文件
- --help : 在线帮助
- --version : 显示版本信息
- -C<字节> : 与参数"-b"相似,但是在切 割时将尽量维持每行的完整性
- [输出文件名] : 设置切割后文件的前置文件名, split会自动在前置文件名后再加上编号
1:按照大小切割
split -b 10m -d -a 4 /需切割的文件路径 /切割到什么位置
2:按照行数切割
split -l 100 //需切割的文件路径
5:我们可以通过一个简单的脚本,来实现文件切割,后续我们只需要运行脚本即可.
vi split.sh(脚本名称自定义即可)
#!/bin/bash
log_path=/需要切割文件路径
current_date=`date -d "-1 day" "+%Y%m%d"`
split -b 2048m -d -a 4 ${log_path}/server.out ${log_path}/log_${current_date}_
cat /dev/null > ${log_path}/server.out
我们可以通过bash split.sh执行脚本即可