- 日志切割时企业中常规动作,我们不会每天去手工执行一遍命令,通常是让脚本自己执行,于是我们可以将这个动作写进任务计划,每天凌晨自动执行。
#!/usr/bin/bash
s_log="/usr/local/nginx/logs/access.log"
d_log="/root/my_sh/nginx/logs/$(date +%Y-%m-%d_%H-%M-%S).log"
d_log_dir="/root/my_sh/nginx/logs"
# 判断目录是否存在,不存在则创建
if [ ! -d "$d_log_dir" ];then
mkdir -p "$d_log_dir"
fi
# 判断原始日志文件是否存在,存在则移动并改名
if [ -f "$s_log" ];then
mv "$s_log" "$d_log"
fi
# 重新打开nginx日志文件-方法1
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
# 方法2
# /usr/local/nginx/sbin/nginx -s reopen
if [ $? -eq 0 ]
then
echo "$(date +%Y-%m-%d_%H-%M-%S) 日志切割成功" >> "/root/my_sh/nginx/nginx_cut_access.log"
else
echo "$(date +%Y-%m-%d_%H-%M-%S) 日志切割失败" >> "/root/my_sh/nginx/nginx_cut_error.log"
fi
创建好两个日志切割文件
touch /root/my_sh/nginx/nginx_cut_access.log
touch /root/my_sh/nginx/nginx_cut_error.log
- 将脚本添加到定时任务当中去
执行命令
crontab -e
添加定时任务,每天23:59分执行
59 23 * * * /bin/sh /root/my_sh/nginx/nginx_cut_log.sh