要设置一个 cron 作业来清除磁盘上每 10 分钟超过 8 分钟的过时缓存文件,这是一项简单的任务。
# crontab -e
*/10 * * * * root find /tmp/diskcache -type f -mmin +8 -delete 2>/dev/null
问题是如果我想将磁盘缓存移动到 tmpfs。我对 tmpfs 的想法(否则 tmpfs 会吃掉默认的一半内存)是:
/etc/fstab
tmpfs /dev/diskcache tmpfs nodev,nosuid,size=2G 0 0
新命令将是(正确吗?):
# crontab -e
*/10 * * * * root find /dev/diskcache -type f -mmin +8 -delete 2>/dev null
这是目前最好的方法吗?最重要的是,它正确吗?谢谢 :)
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/ploop39151p9 41151808 634408 38420352 2% /
devtmpfs 3145728 0 3145728 0% /dev
tmpfs 3145728 0 3145728 0% /dev/shm
tmpfs 3145728 32 3145696 1% /run
tmpfs 3145728 0 3145728 0% /sys/fs/cgroup
答案1
它会起作用的。
但是,/dev 目录通常用于存放设备文件。如果您不希望 /tmp 成为 tmpfs,只希望目录“diskcache”,您可以在 /tmp/diskcache 挂载 tmpfs。
每十分钟执行一次 cronjob 的替代方案可能是为该目录设置一个文件系统观察程序,为该目录中创建的每个文件生成一个进程,该进程会休眠 8 分钟,然后删除该文件。就像这样:
inotifywait -m -e create --format %f /tmp/diskcache | while read newfile; do ( sleep $((8*60)) && rm -f "${newfile}" )& done
华泰