• shell生成按年月的目录


    1 场景

         最近有个小需求,需要从nginx日志里面提取一些有用的数据,并格式化成json格式存储,会一直保存,这样的话每天生成一个文件,几年后都好几千个文件,不便于管理和查找,所以想着按年月分别保存,这样的话一个目录下文件最多也就31个文件。

    2 脚本

    [root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
    [root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
    [root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
    [root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
    [root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
    [root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
    [root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
    [root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
    [root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
    [root@izwz9f1slw8pe82ztnynn1z ~]# tree /nas
    /nas
    └── json_logs
        └── 2020
            └── 10
                ├── json-log_2020-10-26_16:07:54
                ├── json-log_2020-10-26_16:07:55
                ├── json-log_2020-10-26_16:07:56
                └── json-log_2020-10-26_16:07:57
    
    3 directories, 4 files
    [root@izwz9f1slw8pe82ztnynn1z ~]# cat test_date.sh 
    #!/usr/bin/env bash
    
    year=$(date +%Y)
    
    month=$(date +%m)
    
    ymd=$(date +%Y-%m-%d)
    
    hms=$(date +%T)
    
    
    base="/nas/json_logs"
    ym=${year}/${month}
    json_logs="${base}/${year}/${month}"
    
    #test_file=json-log_${ymd}
    test_file=json-log_${ymd}_${hms}
    
    # mkdir
    [ ! -d $json_logs ] && { mkdir -p $json_logs; }
    
    echo '{"remote_ip":"1.1.1.1"}' > ${json_logs}/${test_file}
    [root@izwz9f1slw8pe82ztnynn1z ~]# tree -d /nas
    /nas
    └── json_logs
        └── 2020
            └── 10
    
    3 directories
    [root@izwz9f1slw8pe82ztnynn1z ~]# ls /nas
    json_logs
    [root@izwz9f1slw8pe82ztnynn1z ~]# ls /nas/
    json_logs
    [root@izwz9f1slw8pe82ztnynn1z ~]# ls /nas/json_logs/
    2020
    [root@izwz9f1slw8pe82ztnynn1z ~]# ls /nas/json_logs/2020/
    10
    [root@izwz9f1slw8pe82ztnynn1z ~]# ls /nas/json_logs/2020/10/
    json-log_2020-10-26_16:07:54  json-log_2020-10-26_16:07:55  json-log_2020-10-26_16:07:56  json-log_2020-10-26_16:07:57
    [root@izwz9f1slw8pe82ztnynn1z ~]# 
    

      

    3 手动修改个人测试服务器的时间测试

    [root@izwz9f1slw8pe82ztnynn1z ~]# date -s '20201209'
    Wed Dec  9 00:00:00 CST 2020
    [root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
    [root@izwz9f1slw8pe82ztnynn1z ~]# date -s '20201210'
    Thu Dec 10 00:00:00 CST 2020
    [root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
    [root@izwz9f1slw8pe82ztnynn1z ~]# date -s '20201211'
    Fri Dec 11 00:00:00 CST 2020
    [root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
    [root@izwz9f1slw8pe82ztnynn1z ~]# date -s '20201212'
    Sat Dec 12 00:00:00 CST 2020
    [root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
    [root@izwz9f1slw8pe82ztnynn1z ~]# date -s '20201211'
    Fri Dec 11 00:00:00 CST 2020
    [root@izwz9f1slw8pe82ztnynn1z ~]# tree /nas
    /nas
    └── json_logs
        └── 2020
            ├── 10
            │   ├── json-log_2020-10-26_16:07:54
            │   ├── json-log_2020-10-26_16:07:55
            │   ├── json-log_2020-10-26_16:07:56
            │   ├── json-log_2020-10-26_16:07:57
            │   ├── json-log_2020-10-27_00:00:06
            │   ├── json-log_2020-10-27_00:00:28
            │   └── json-log_2020-10-29_00:00:05
            ├── 11
            │   ├── json-log_2020-11-01_00:00:03
            │   ├── json-log_2020-11-01_00:00:23
            │   ├── json-log_2020-11-01_00:00:27
            │   ├── json-log_2020-11-02_00:00:02
            │   ├── json-log_2020-11-02_00:00:03
            │   ├── json-log_2020-11-02_00:00:06
            │   └── json-log_2020-11-03
            └── 12
                ├── json-log_2020-12-08
                ├── json-log_2020-12-09
                ├── json-log_2020-12-10
                ├── json-log_2020-12-11
                └── json-log_2020-12-12
    
    5 directories, 19 files
    [root@izwz9f1slw8pe82ztnynn1z ~]# cat test_date.sh 
    #!/usr/bin/env bash
    
    year=$(date +%Y)
    
    month=$(date +%m)
    
    ymd=$(date +%Y-%m-%d)
    
    hms=$(date +%T)
    
    
    base="/nas/json_logs"
    ym=${year}/${month}
    json_logs="${base}/${year}/${month}"
    
    test_file=json-log_${ymd}
    #test_file=json-log_${ymd}_${hms}
    
    # mkdir
    [ ! -d $json_logs ] && { mkdir -p $json_logs; }
    
    echo '{"remote_ip":"1.1.1.1"}' > ${json_logs}/${test_file}
    [root@izwz9f1slw8pe82ztnynn1z ~]# 
    

      

  • 相关阅读:
    pip换国内源
    docker build 的 cache 机制
    jenkins 修改log路径
    lsb_release: command not found 解决
    Linux 添加开机启动项的三种方法
    FAT AP v200R005 配置二层透明模式(web&命令行,开局)
    SharePoint 2010 文档管理系列之星级评论功能
    SharePoint 2010 文档管理之过期归档工具
    SharePoint 2010 文档管理系列之文档搜索
    SharePoint 2010 文档管理系列之准备篇
  • 原文地址:https://www.cnblogs.com/chenjinxi/p/13879096.html
Copyright © 2020-2023  润新知