Один из моих серверных демонов использует много места в / tmp. Поскольку я не хочу перезагружать машину, когда на сервере заканчивается дисковое пространство, мне нужно запустить сценарий CRON, который удаляет старые временные файлы.
Что было бы хорошим способом рекурсивно удалить все файлы и каталоги в / tmp, которым более 1 часа от пользователя, скажем www-data
? Конечно, он не должен разрешать символические ссылки и начинать удаление файлов где-нибудь в системе. Я использую Ubuntu 12.04 и буду запускать это задание cron от имени пользователя root.
Перетащите такой скрипт в /etc/cron.hourly:
find /tmp -mmin +60 -user www-data -delete
Вы можете сначала вручную запустить find
без -delete
возможность проверить свою работу.
Хм, еще, чтобы убить подкаталоги (т.к. -delete
удаляет только файлы) добавьте в другую строку:
find /tmp -mmin +60 -user www-data -type d -empty -exec rmdir {} \;
В зависимости от глубины подкаталога второй find
может потребоваться некоторое время для восстановления, так как mtime для родительского каталога будет обновляться по мере удаления подкаталога.
Вы также можете проверить с помощью команды lsof, открыт ли временный файл, прежде чем удалить его.