Magentoを実行していますが、以前のセッションデータはクリーンアップされないため、これをクリーンアップするにはシェルスクリプト/ cronjobを使用する必要があります。
0,30 * * * * /usr/bin/find /var/www/magento/var/session -name 'sess_*' -type f -mtime +1 -exec rm {} \;
しかし、スクリプトは通常古いファイルを削除するのに数分かかります。このディレクトリには「sess_」で始まるファイルだけがあるため、ファイルを検索する必要があるかどうか疑問に思います。しかし、まだ何とかこのファイルを繰り返す必要があります。そうですか?
(このディレクトリには毎日約50,000個のファイルが作成されます。)
答え1
rm
まったく実行しないでください。 findが処理できます。
0,30 * * * * /usr/bin/find /var/www/magento/var/session -name 'sess_*' -type f -mtime +1 -delete
答え2
ディレクトリの唯一の内容がファイルsess_*
の場合は省略でき、-name 'sess_*'
とにかくfind
ナビゲートされます。部品を取り除き、一致するものをテストしてください-exec
。
$ /usr/bin/find /var/www/magento/var/session -type f -mtime +1
それからクローンの仕事のために
0,30 * * * * /usr/bin/find /var/www/magento/var/session -type f -mtime +1 -exec rm {} \;
でも、ボトルネックがあるところがそこかどうかはよくわかりません。したがって、おそらくmikeservのようです。コメントもっと役に立ちます。
-execdir
また、セキュリティ上の理由から。-exec
代わりに使用する必要がありますman find
。
答え3
私はPerlを使います。 Perlはこれよりも高速で効率的です。find + rm
0,30 * * * * cd /var/www/magento/var/session && /usr/bin/perl -e 'for(<sess_*>){((stat)[9]<(unlink))}'
1日に500,000を超えるログを含むログディレクトリを削除すると、約6分で削除されます。