Find
優化一個shell腳本/命令來刪除文件
我正在執行 Magento,它不會清理舊的會話數據,所以我需要使用 shell 腳本/cronjob 來清理它:
0,30 * * * * /usr/bin/find /var/www/magento/var/session -name 'sess_*' -type f -mtime +1 -exec rm {} \;
但是該腳本通常需要幾分鐘才能刪除舊文件。我想知道是否需要搜尋文件,因為在這個目錄中只有以“sess_”開頭的文件 - 但我仍然需要以某種方式遍歷這些文件,對吧?
(每天在此目錄中創建大約 50.000 個文件)
根本不用擔心執行
rm
,find 可以處理它:
0,30 * * * * /usr/bin/find /var/www/magento/var/session -name 'sess_*' -type f -mtime +1 -delete
如果該目錄中唯一的東西是
sess_*
文件,您可以省略-name 'sess_*'
, 並且find
無論如何都會遍歷。通過移除-exec
零件來測試它會匹配什麼。$ /usr/bin/find /var/www/magento/var/session -type f -mtime +1
然後對於 cron 作業,
0,30 * * * * /usr/bin/find /var/www/magento/var/session -type f -mtime +1 -exec rm {} \;
話雖如此,我不確定這是否是瓶頸所在,所以也許 mikeserv 的評論會更有幫助。
此外,出於安全原因,您可能應該使用
-execdir
而不是;-exec
見man find
。