Оптимизируйте сценарий оболочки / команда для удаления файлов

[1120825] Разве не чище поместить это в rc.local (или эквивалент)? Это стандартный способ делать вещи после загрузки. Это лучше, потому что он вызывается не при пробуждении cron (который находится в середине процедуры загрузки), а после того, как все сервисы запущены. Это также более надежный способ. Если вы хотите вести журнал, вы все равно можете использовать команду "loger".

Кроме того, скрипт мог запуститься, но через мгновение не сработал и, таким образом, его не видно в ps.[1120828].

2
09.02.2015, 01:11
3 ответа

Не утруждайте себя исполнением rm , Найдёт справится:

0,30 * * * /usr/bin/find /var/www/magento/var/session -name 'sess_*' -тип f -mtime +1 -delete

1
27.01.2020, 22:56

Я бы использовал perl, это быстрее и эффективнее, чем найти + rm

0,30 * * * * cd /var/www/magento/var/session && /usr/bin/perl -e 'for(<sess_*>){((stat)[9]<(unlink))}'

Удаление моего журнала с более чем 500,000 журналов в нем ежедневно очищает его менее чем за ~6 минут.

-1
27.01.2020, 22:56

Если единственное, что находится в этом каталоге - это файлы sess_*, вы можете просто пропустить - имя 'sess_*', и find все равно пройдет через него. Проверьте, что бы оно совпало, удалив часть -exec.

$ /usr/bin/find /var/www/magento/var/session -type f -mtime +1

Тогда для работы с cron,

0,30 * * * * /usr/bin/find /var/www/magento/var/session -type f -mtime +1 -exec rm {} \;

Сказав это, я не уверен, что именно здесь находится узкое место, так что, возможно, комментарии Майксера были бы более полезны.

Также, по соображениям безопасности вам, вероятно, следует использовать -execdir вместо -exec; смотрите - man find.

0
27.01.2020, 22:56

Теги

Похожие вопросы