前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Shell编程-案例(二)

Shell编程-案例(二)

作者头像
运维小路
发布2024-11-01 19:59:29
发布2024-11-01 19:59:29
930
举报
文章被收录于专栏:运维小路

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们前面学习了那么多命令,以及涉及到部分逻辑判断的问题。从简单来说,他就是Shell编程,只有由于命令比较单一,只能实现比较简单的功能。如果我们把多个操作都放到一起去,并添加更复杂的逻辑在里面,他就是Shell编程。所以我们主要从以下几个方面讲解Shell编程:

Shell编程-什么是shell

Shell编程-变量

Shell编程-数据类型

Shell编程-逻辑判断

Shell编程-if判断

Shell编程-if和else

Shell编程-while循环

Shell编程-for循环

Shell编程-case

Shell编程-break

Shell编程-continue

Shell编程--函数

Shell编程-案例(一)

Shell编程-案例(二)(本章节)

Shell编程-小结

前面讲了2个脚本,一个是备份数据库,一个监测服务的,今天我们来继续讲2个脚本,都是和文件相关的。

日志切割

如果是我们自己的手工编译安装的nginx,默认情况下日志是会持续写入一个文件,会造成日志很大。而且由于文件很大,需要分析的时候也比较麻烦,所以需要对日志进行切割。

代码语言:javascript
复制
#!/bin/bash

# 定义日志文件路径
log_path="/var/log/nginx/access.log"
# 备份目录
backup_dir="/var/log/nginx/backup_logs"
# 获取当前日期
date_str=$(date +%Y%m%d)

# 创建备份目录(如果不存在)
mkdir -p $backup_dir

# 移动当前日志文件到备份目录并以日期命名
mv $log_path $backup_dir/access.log.$date_str

# 向 Nginx 主进程发送信号,让其重新打开日志文件
kill -USR1 $(cat /var/run/nginx.pid)

脚本解释

这个脚本每行都有注释,都不需要单独解释,只要能看懂注释即可。

文件删除

根据上个脚本,我们把日志进行了按天切割,单个日志文件虽然变小了,但是内容并没有减少,所以还需要进行删除,只保留最近的一段时间的。

代码语言:javascript
复制
#!/bin/bash

# 设置日志目录
#log_dir="/var/log/nginx/backup_logs"
log_dir="/root/pgsql"
# 设置保留天数
days_to_keep=7

# 获取当前时间的时间戳
current_time=$(date +%s)

# 日志文件路径
log_file="/var/log/nginx/backup_log_deletion.log"

# 遍历目录下的文件
for file in $log_dir/*; do
    if [ -f "$file" ]; then
        # 获取文件的修改时间戳
        file_time=$(stat -c %Y "$file")
        # 计算时间差(单位:秒)
        time_diff=$((current_time - file_time))
        # 转换为天数
        days_diff=$((time_diff / 86400))

        if [ $days_diff -gt $days_to_keep ]; then
            # 删除过期的日志文件,并记录到日志文件中
            rm -f "$file"
            echo "Deleted $file at $(date)" >> "$log_file"
        fi
    fi
done

脚本解释

这个脚本也是都有注释,所以不需要单独解释,唯一需要解释的就是stat命令,它可以显示文件的3个时间(访问时间,修改时间,改变时间)。

总结

1.其实第一个脚本,也可以使用Linux自带的logrotate来实现。

2.第二个脚本也可以用find命令来实现。

3.在Linux中,其实实现一个功能都有多种方法来实现,我们可以根据自己掌握的情况来实现。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前面讲了2个脚本,一个是备份数据库,一个监测服务的,今天我们来继续讲2个脚本,都是和文件相关的。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档