Назад | Перейти на главную страницу

скрипт для удаления всех файлов в / tmp от определенного пользователя

Один из моих серверных демонов использует много места в / 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, открыт ли временный файл, прежде чем удалить его.