zoukankan      html  css  js  c++  java
  • 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 ~]# 
    

      

  • 相关阅读:
    Spring boot mybatis : Error creating bean with name 'com.github.pagehelper.autoconfigure.MapperAutoConfiguration': Invocation of init method failed;
    方法调用
    初识MQ
    Shell 变量
    Eclipse 导入本地 Git 项目
    IDEA 常用快捷键
    Xshell 配色方案
    冒泡排序
    递归
    安卓服务Service详解
  • 原文地址:https://www.cnblogs.com/chenjinxi/p/13879096.html
Copyright © 2011-2022 走看看