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

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

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


以我的日志名为 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 文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值