最近有個小需求,需要從nginx日誌裡面提取一些有用的資料,並格式化成json格式儲存,會一直儲存,這樣的話每天生成乙個檔案,幾年後都好幾千個檔案,不便於管理和查詢,所以想著按年月分別儲存,這樣的話乙個目錄下檔案最多也就31個檔案。
[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=$/$
json_logs="$/$/$"
#test_file=json-log_$
test_file=json-log_$_$
# mkdir
[ ! -d $json_logs ] &&
echo '' > $/$
[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 ~]#
[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=$/$
json_logs="$/$/$"
test_file=json-log_$
#test_file=json-log_$_$
# mkdir
[ ! -d $json_logs ] &&
echo '' > $/$
[root@izwz9f1slw8pe82ztnynn1z ~]#
shell按日期的迴圈
經常有需要按日期執行指令碼補資料。有時候是好幾天的。但是可能整個過程下來會超過24個小時。最早的時候是這樣的乙個方案。for i 0 i 10 i do date date d i days ago y m d sh dojob.sh date done這個方案的不足就是,跨天之後,會漏掉某個日期。...
shell 整理目錄下的備份檔案並生成壓縮包
背景 ci構建下來的備份應用包在伺服器上保留幾十個,空間占用大,看著不好看,可能還用不著,所以準備正好練練手吧!其實ci上可以設定少保留幾個,但是我沒管。我只是想練練指令碼 先來看一下我的伺服器源目錄的資料夾放置 44個挺多的 我想要的結果 不長,但是shell我用的手生。語法都是靠查靠找。實在艱辛...
shell 整理目錄下的備份檔案並生成壓縮包
背景 ci構建下來的備份應用包在伺服器上保留幾十個,空間占用大,看著不好看,可能還用不著,所以準備正好練練手吧!其實ci上可以設定少保留幾個,但是我沒管。我只是想練練指令碼 先來看一下我的伺服器源目錄的資料夾放置 44個挺多的 再來看一下我的結果 不長,但是shell我用的手生。語法都是靠查靠找。實...