Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Удаляем временные файлы с CRON
СообщениеДобавлено: 2012-07-03 00:13 
Не в сети
Аватара пользователя
Раздал: 40.11 ТБ
Скачал: 22.37 ГБ
Ратио: 1836.110


Зарегистрирован: 2012-04-30 00:48
Сообщения: 353
Есть сайты, где пользователям дается возможность создавать/загружать свои файлы на сервер. Например, изображения, которые потом можно манипулировать. Если сайт популярный, то таких вот загруженных файлов может собрать очень много. Если у вас ограничено место на сервере, читайте дальше.

На помощь придет cron, планировщик задач в системах, основанных на UNIX. Многие люди сначала создают PHP скрипт для удаления ненужных файлов, а затем добавляют задание в crontab, которое будет запускать этот скрипт через определенное время.

Например, эта запись в crontab будет запускать ваш PHP скрипт каждую минуту

* * * * * php /path/to/your/script.php

При каждом запуске скрипта вам будет оправляться имэйл, если он указан. Если он не указан, письма буду отправляться на корневой (основной) адрес. В любом случае получится куча почты. Это удобна для проверки работы скрипта, так как вам будет высылаться информация об ошибках. Но после наладки скрипта, отсылку вообще можно отменить так

* * * * * php /path/to/your/script.php >/dev/null 2>&1

Но можно обойтись без PHP или других скриптов вообще, есть способ лучше и быстрее, да и с письмами возиться не надо.

Задача: каждый час удалять файлы, которые были созданы более одного часа назад.

Решение:

0 * * * * find /полный/путь/к/папке/с/файлами -type f ! \( -name 'index.html' \) -cmin +60 -exec rm {} \;

Пояснение:

0 * * * * - запускать в 0 минут каждый час, каждый день, каждый месяц, каждый день недели.
find /полный/путь/к/папке/с/файлами - искать в этой папке
-type f - нас интересуют только файлы
! \( -name 'index.html' \) - все файлы, кроме index.html
-cmin +60 - возраст файла больше 60 минут
-exec rm {} - мы хотим удалить файлы

И еще несколько примеров.

Каждые 2 часа удалять файлы, созданные больше часа назад

0 */2 * * * find /полный/путь/к/папке/с/файлами -type f ! \( -name 'index.html' \) -cmin +60 -exec rm {} \;

Каждый день в 22:00 удалять файлы, созданные больше 12 часов назад

0 22 * * * find /полный/путь/к/папке/с/файлами -type f ! \( -name 'index.html' \) -cmin +720 -exec rm {} \;

Каждые 6 часов удалять все файлы, созданные больше 3 часов назад

0 */6 * * * find /полный/путь/к/папке/с/файлами -type f -cmin +180 -exec rm {} \;


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Переместиться наверх
 Главная |  Список форумов |   Time : 0.587s | 14 Queries | GZIP : Off |