У меня мало опыта настройки заданий cron.
Мне нужно настроить задание cron для удаления всех файлов, начинающихся с имени файла 'sess_'
из '/tmp'
папку каждый час.
Если я запустил crontab, используя crontab -e
и напишите следующий код:
0 */1 * * * find /tmp/ -name "sess_*" -delete
это сработает?
Синтаксис выглядит правильно? Мне нужно что-нибудь перезапускать? (т.е. Apache)
Заранее спасибо!
В */1
такой же как *
в определении cron так
0 * * * * ...
будет работать так же.
В найти -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
Поступая таким образом, вы не будете слепо удалять файлы сеанса, которые используются.