linux shell脚本切割日志文件的方法

要求:一直监控时间,每天的24点将pwd获取当前路径下的log.log文件改名成当天日期文件,并创建新的log.log,并删除前7天的文件

创建seg_log.sh文件

vim seg_log.sh 

#!/bin/bash

# 获取当前工作目录
current_directory=$(pwd)

# 主循环,持续监控时间
while true; do
    # 获取当前日期的小时和分钟
    current_hour=$(date +"%H")
    current_minute=$(date +"%M")
    
    # 检查是否到达午夜(00:00)
    if [ "$current_hour" -eq 00 ] && [ "$current_minute" -eq 00 ]; then
        # 获取当前日期
        current_date=$(date +"%Y-%m-%d")
        
        # 将 log.log 文件改名为当前日期
        mv "$current_directory/log.log" "$current_directory/$current_date.log"

        # 创建新的 log.log 文件
        touch "$current_directory/log.log"

        # 删除前7天的日志文件
        seven_days_ago=$(date --date="7 days ago" +"%Y-%m-%d")
        old_log_file="$current_directory/$seven_days_ago.log"

        if [ -f "$old_log_file" ]; then
            rm "$old_log_file"
        fi

        echo "已完成每日操作于 $current_date"
    fi

    # 等待1分钟再次检查时间
    sleep 60
done

给予执行权限:chmod +x seg_log.sh

这样,该脚本将会每分钟检查一次时间,一旦到达午夜(00:00),就会执行所需的操作:重命名日志文件、创建新的日志文件,并删除7天前的过期日志文件。

nohup ./seg_log.sh > shell.log 2>&1 &

查看shell脚本是否启动:

方法一:使用 ps 命令

可以使用 ps 命令结合 grep 来查找特定的进程,以确定脚本是否在运行中。

ps aux | grep seg_log.sh

  • ps aux:列出当前系统中所有进程的详细信息。
  • grep seg_log.sh:过滤出包含 seg_log.sh 字符串的进程信息。

如果脚本在运行中,你将看到类似以下的输出(这里的示例脚本名为 seg_log.sh):

user 12345 0.0 0.1 123456 7890 pts/1 S 12:00 0:00 ./seg_log.sh

方法二:查看 nohup 的输出日志

如果使用 nohup 启动了脚本,并将输出重定向到文件,可以查看这个输出文件来确认脚本是否在运行以及其输出信息。

tail -f seg_log.log

  • tail -f seg_log.log:实时显示 seg_log.log 文件的末尾内容,包括脚本的输出信息。

方法三:使用 pgrep 命令

pgrep 命令可以查找匹配特定名称的进程的进程ID。

pgrep -f seg_log.sh

  • pgrep -f seg_log.sh:查找包含 seg_log.sh 字符串的进程名,并输出其进程ID(PID)。

如果脚本正在运行,你将看到输出一个或多个与脚本相关的进程ID。

方法四:检查日志或输出文件

如果脚本有输出日志或将输出重定向到文件,可以直接查看该文件内容来了解脚本的运行状态和输出信息。

less seg_log.log

  • less seg_log.log:查看 seg_log.log 文件的内容,可以使用 less 或其他文本查看器来浏览文件内容。

通过这些方法,你可以有效地检查和确认你的Shell脚本是否在Linux系统中正常运行。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值