Shell+crontab定时搬运日志

Shell 常用来写一些自动化的工具,比如我们平时的应用产生的日志文件,在知道日志文件产生的规律之后,我们可以用linux命令轻易得到对应的日志文件位置,从而获取其中的日志数据,进而进行搬运处理,利用shell+crontab可以实现定时日志的搬运

准备工作

创建文件夹/shell/project/2022-08-27,用来表示项目当天产生日志的文件夹,同时记得往文件夹中新建一些文件,表示日志数据

mkdir -p /shell/project/2022-08-27
cd /shell/project/2022-08-27
touch 2022-08-27.log

创建文件夹/shell/logs,用来表示我们需要搬运到的目的文件夹

mkdir -p /shell/logs

搬运的命令

其实用linux命令,也可以简单地将文件移动到某个文件夹下,上面的准备工作无非可以写成以下命令:

mkdir /shell/logs/2022-08-27
cp /shell/project/2022-08-27/2022-08-27.log /shell/logs/2022-08-27

但是如果每天重复性地去做这个事情,就显得很机械化、繁琐了,有时候可能还会忘记,所以我们可以交给shell去做这个事情。

使用shell进行文件的搬运

我们可以先新建一个logs.sh文件

cd /shell 
touch logs.sh

思路:首先日志每天都会生成,所以我们需要知道当天所生成的日志目录的位置,这里可以用date命令去解决这个问题,同时,我们需要判断搬运到的目的地的文件夹是否存在,不存在则需要去创建它

编写 logs.sh

#!/bin/bash

# 项目路径
project_path="/shell/project/"

# 日志路径
log_path="/shell/logs/"

# 获取当前时间
date=$(date +"%Y-%m-%d")


# 今天的项目日志路径
project_path=$project_path$date
# 今天的日志路径
log_path=$log_path$date

# 判断项目日志文件是否存在
if [  -e $project_path ];
then
        # 判断目标日志目录是否存在
        if [ ! -e $log_path ];
                then
                mkdir -p $log_path
        fi
        # 复制文件到日志目录下
        cp $project_path/* $log_path
fi

echo '移动完成'

测试:运行命令,并查看是否在/shell/logs/下生成文件夹和文件

sh logs.sh
cd /shell/logs
ls

此时我们已经完成了shell脚本的编写,但是脚本此时还是人工去执行的一个情况,想要实现定时搬运的功能,还需要借助Linux的定时工具crontab去实现

使用crontab实现任务的定时运行

crontab语法

  • 从左到右顺序依次为:分钟、小时、日期、月份、周、脚本、参数1、参数2…
  • 比如每隔一分钟执行依次脚本:*/1 * * * * /path/a.sh

开启crontab

crontab -e

比如我们想在凌晨2点收集日志,可以在打开的界面中输入以下内容,并保存退出

0 2 * * * /shell/logs.sh

以上,我们就完成了定时搬运日志的动作!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值