我对设置 cron 作业的经验很少。
我需要配置一个 cron 作业,每小时'sess_'
从文件夹中删除以文件名开头的所有文件。'/tmp'
如果我使用启动 crontabcrontab -e
并编写以下代码:
0 */1 * * * find /tmp/ -name "sess_*" -delete
這會有用嗎?
语法看起来正确吗?我需要重启任何东西吗?(例如 - Apache)
提前致谢!
答案1
与 cron 定义*/1
相同,因此*
0 * * * * ...
将以同样的方式工作。
在 find 中,-delete
将按照您的要求删除文件,但这可能不是您想要的。您可以通过在命令行中运行 find 命令来测试它,而无需使用-delete
选项
find /tmp/ -name "Sess_*"
这将为您提供将要执行的操作的文件列表。
更好的办法可能是查看 /etc/cron.d/php5 文件,该文件对位于 /var/lib/php5 中的会话文件执行相同的操作。请注意,它仅使用 -cmin 选项删除早于系统最大寿命的文件...
# /etc/cron.d/php5: crontab fragment for php5
# This purges session files older than X, where X is defined in seconds
# as the largest value of session.gc_maxlifetime from all your php.ini
# files, or 24 minutes if not defined. See /usr/lib/php5/maxlifetime
# Look for and purge old sessions every 30 minutes
09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete
通过这种方式,您就不会盲目地删除正在使用的会话文件。