2014-07-01 51 views
0

我想使用cronjob刪除x天的舊版本.tar & .sql文件。CentOS:使用cron刪除X天的舊文件

我試過多個命令,但沒有奏效。

命令如,

find /path/to/files -type f -mtime +10 -delete 
find /path/to/folder -name '*.sql' -mtime +30 -delete 
find "$FILEDIR" -mtime +14 -delete 
[[ $FILEDIR == /home/abc/* ]] && find "$FILEDIR" -mtime +14 -delete 

上述命令完美運行但不刪除任何內容。 需要幫助。

+0

第一個應該工作: 查找/路徑/到/文件型的F -mtime +10 - 刪除 如果沒有,那麼您是否確實擁有對正在執行cron的用戶的所有文件父目錄的文件和執行權限的寫權限?你有任何cron輸出? – fquinner

+0

我用cron在同一個目錄下創建了'.tar'文件。所以寫入權限就在那裏。 – Shri

+0

這是相同的目錄,但你試圖刪除自己的實際文件?添加到你的cron「> /your/log/file.log 2>&1」來查看打印的錯誤。還可以在查找命令中添加-print以打印找到的所有匹配項並查看日誌以進行分析。你的命令本身應該是健全的。 – fquinner

回答

0

我使用for循環和回聲語句進行調試,並確保我不會錯誤地刪除任何內容。

那麼試試這個:

for filename in `find /path/to/files -type f -mtime +10`; do echo "rm $filename"; done 

這會列出什麼計劃做。檢查它,確保它看起來不錯,然後通過消除回聲聲明

for filename in `find /path/to/files -type f -mtime +10`; do rm $filename; done 

如果它不工作,那麼你就可以輸出上面的文件並運行它作爲腳本

for filename in `find /path/to/files -type f -mtime +10`; do echo "rm $filename"; done > myremove.sh 
運行

然後運行它

sh -x ./myremove.sh 

並檢查上面的輸出錯誤。

一旦你得到了它的bug免費的,你可以添加與cron作爲單個命令或腳本

+0

'在'find/path/to/files -type f -mtime + 10'中輸入文件名;做echo「rm $ filename」; done'命令正在運行完美,但再次輸出沒有任何輸出 – Shri

+0

鍵入命令「find/path/to/files」-type f -mtime +10「 - 是否有輸出?可能沒有任何候選文件,例如文件10多天前進行了修改 – ben