linux下每天打包分类日志/linux定时执行脚本

有时候日志,一个月下来就堆积了几百mb,打开时非常卡,定位也不方便,如何在linux下,每天更新新的日志,将前一天的日志打包成如下?

linux下每天打包分类日志/linux定时执行脚本_第1张图片

用最简单的方法完成这个目标


以我的日志名为 server.log且日志在/var/log/neutron/目录下为例子:
#!/bin/bash

# 获取当前日期
today=$(date +%Y%m%d)

# 获取前一天的日期
yesterday=$(date -d yesterday +%Y%m%d)

# 检查 neutron.log 文件是否存在
if [ ! -f /var/log/neutron/server.log ]; then
  echo "neutron.log 文件不存在"
  exit 1
fi

# 检查 neutron.log 文件的大小是否为零
if [ -s /var/log/neutron/server.log ]; then
  # 将 neutron.log 文件前一天的日志打包成 server{yesterday}.log 文件
  mv /var/log/neutron/server.log /var/log/neutron/server${yesterday}.log 
else
  echo "neutron.log 文件为空"
touch /var/log/neutron/server.log
fi

将该脚本保存为一个名为 backup_log.sh 的文件。以下是设置脚本执行的示例:

可以直接在命令行敲/var/log/neutron/backup_log.sh 看看有没有创建成功,再进入下一步定时脚本

这里要注意 chmod -R 777 /var/log/neutron/backup_log.sh 不然没有权限也是执行不了的

然后接下来在命令行执行

# 将脚本设置为每天 0 点执行
crontab -e
# 会进入编辑文件
# 在末尾添加以下内容
0 0 * * * /var/log/neutron/backup_log.sh

在 crontab 文件中,每个任务都由六个参数组成,分别表示:

  • 分钟:0 到 59
  • 小时:0 到 23
  • 日期:1 到 31
  • 月份:1 到 12
  • 星期:0 到 7,其中 0 表示星期日
  • 命令:要执行的命令

执行上述命令后,脚本将每天 0 点执行一次,并将 /var/log/neutron/server.log 文件前一天的日志打包成 /var/log/neutron/server{yesterday}.log 文件。

你可能感兴趣的:(基础平台开发,笔记,linux,运维,服务器)