Linux-自动切割MongoDB日志并自动清除

问题

MongoDB的日志不断增加,而且只有一个日志文件,暂用不必要的空间

思路

将日志按天切割,同时删除N天前的日志文件

环境背景

Ubuntu16.04

MongoDB安装路径:/usr/bin

MongoDB日志路径:/var/log/mongodb

解决办法

1、创建sh脚本,用来切割日志,并删除N天前的日志文件

1.1:在合理的路径下:vi mongoLog.sh

1.2:输入以下文本

#!/bin/bash
#Rotate the MongoDB logs to prevent a single logfile from consuming too much disk space.

app=mongod

mongodPath=/usr/bin/  # mongo安装路径

pidArray=$(pidof $mongodPath/$app)  # 获取mongo进程id
days=7  # 代表删除7天前的备份,即只保留最近7天的备份
logfile=/var/log/mongodb  # Mongodb日志存放目录

for pid in $pidArray;do
if [ $pid ]
then
    kill -SIGUSR1 $pid  # 发送切割日志信号
    find $logfile/ -mtime +$days -delete  # 删除7天前的备份文件
fi
done

exit

1.3:输入“:wq”保存退出

1.4:让脚本可执行:chmod 755 mongoLog.sh

 

2、添加定时任务计划

2.1:vi /etc/crontab

2.2:在最后一行添加:59 23 * * * root /etc/mongoLog.sh #表示每天凌晨执行备份

2.3:启动crontab:service cron restart

你可能感兴趣的:(Linux)