Linux Shell script 目錄名稱為日期,自動刪除指定日期點前的目錄 Log
這個 Shell 腳本,用於自動刪除 30 天前的資料夾 Log。首先,腳本列出指定目錄中的資料夾,將其轉換為數組,然後進行日期比較,刪除過期的資料夾。最後,設置可執行權限並安排每週三自動運行此腳本。
程式
登入 root 進行編輯 Shell script:
vim /root/logDelete.sh
#!/bin/bash
folders=$(ls /u1/bsframework/gas/appdata/log-b2b/fastcgidispatch)
# 將換行資料轉 array
mapfile -t dates <<< "$folders"
# 當前日期減 30 天
today30=$(date -d "-30 days" +%s)
for mydate in "${dates[@]}";
do
# 轉成時間戳才能比較大小
mydateTmp=$(date -d "$mydate" +%s)
# 日期小於當天 - 30 天
if [ "$today30" -gt "$mydateTmp" ]; then
# 刪除資料夾
rm -rf "/u1/bsframework/gas/appdata/log-b2b/fastcgidispatch/${mydate}"
#echo "/u1/bsframework/gas/appdata/log-b2b/fastcgidispatch/${mydate}"
fi
done
設定
設定可執行權限:
chmod o+x /root/logDelete.sh
設定 crontab 自動執行 Shell script:
vim /etc/crontab
設定每週三 08:00 自動執行 Shell script:
* 8 * * 3 root /root/logDelete.sh
本著作係採用創用 CC 姓名標示-相同方式分享 3.0 台灣 授權條款授權.